WordPressを自分で修正する人向けの内容です。
WordPressでカテゴリーを表示すると、URLに「category」という文字が表示されてしまいます。
本来であれば、この「category」なしの状態で表示したい。
URLに表示されるcategoryは、プラグインやfunctions.phpを使って消すことができます。
以下からfunctions.phpを使って消す方法と、消す時に注意することを紹介します。
URLからcategoryを消す方法
まずは、「category」を消す方法です。
functions.phpに下記のコードを追加します。
function rename_cat_function($link) { return str_replace("/category/", "/", $link); } add_filter('user_trailingslashit', 'rename_cat_function'); function rename_cat_flush_rules() { global $wp_rewrite; $wp_rewrite->flush_rules(); } add_action('init', 'rename_cat_flush_rules'); function rename_cat_rewrite($wp_rewrite) { $new_rules = array('(.+)/page/(.+)/?' => 'index.php?category_name='.$wp_rewrite->preg_index(1).'&paged='.$wp_rewrite->preg_index(2)); $wp_rewrite->rules = $new_rules + $wp_rewrite->rules; } add_filter('generate_rewrite_rules', 'rename_cat_rewrite');
これで、サイトに表示されるカテゴリーリンクも含めて、URLからcategoryの文字を消すことができます。
URLからcategoryを消した時に注意すること
注意しないといけないのが下記の2つです。
- パーマリンクの設定
- カテゴリーと固定ページのスラッグ
パーマリンクの設定
「category」を消した状態で、カテゴリー一覧を表示させた場合、正常に表示されるのは「基本」と「カスタム構造(※条件付)」でした。
- 基本 正常
- 日付と投稿名 不具合
- 月と投稿名 不具合
- 数字ベース 不具合
- 投稿名 不具合
- カスタム構造 正常
メモ
不具合といっているのは、複数のカテゴリーで記事を投稿している時に、全カテゴリーの記事が表示されてしまうなどです(カテゴリーで絞りこまれない)。
カスタム構造は、すべての条件で試したわけではないのですが、カテゴリーを挟んだURL構造にすれば大丈夫そうです。
「基本」だとパラメータを使ったURLになってしまうので、URL表示にこだわるなら「カスタム構造」を使うしかないと思います。
カテゴリーと固定ページのスラッグ
次に気を付けるのが「カテゴリーのスラッグ」と「固定ページのスラッグ」です。
同じスラッグ名をつけてはいけません。
メモ
スラッグとはURLの投稿名になる部分です。
どちらも同じスラッグを指定すると「固定ページのスラッグ」が優先されます。
例えば、「投稿」>「カテゴリー」でカテゴリーのスラッグに「archive」と指定したとします。
固定ページでスラッグを「archive」にして、自分のURL/archive/にアクセスすると、固定ページが表示されます。
カテゴリー一覧がうまく絞り込まれないという場合は、同じスラッグになっていないかも確認してみましょう。
【まとめ】URLからcategoryを消す方法と注意点
URLが気になるのは企業サイトくらいだと思うので、個人で運営する分にはそのままでもいいと思います。
- functions.phpで消せる。
- パーマリンクの設定は「基本」か「カスタム構造(条件付)」に変える。
- カテゴリーと固定ページのスラッグ名はダブらないようにする。