WordPressでURLからcategoryを消す方法と注意すること

当サイトはアフィリエイト広告を利用しています。

WordPressを自分で修正する人向けの内容です。

WordPressでカテゴリーを表示すると、URLに「category」という文字が表示されてしまいます。

https://wporz.com/category/affinger5/

本来であれば、この「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構造にすれば大丈夫そうです。

/%category%/%postname%/

「基本」だとパラメータを使ったURLになってしまうので、URL表示にこだわるなら「カスタム構造」を使うしかないと思います。

カテゴリーと固定ページのスラッグ

次に気を付けるのが「カテゴリーのスラッグ」と「固定ページのスラッグ」です。

同じスラッグ名をつけてはいけません。

メモ

スラッグとはURLの投稿名になる部分です。

どちらも同じスラッグを指定すると「固定ページのスラッグ」が優先されます。

例えば、「投稿」>「カテゴリー」でカテゴリーのスラッグに「archive」と指定したとします。

固定ページでスラッグを「archive」にして、自分のURL/archive/にアクセスすると、固定ページが表示されます。

カテゴリー一覧がうまく絞り込まれないという場合は、同じスラッグになっていないかも確認してみましょう。

【まとめ】URLからcategoryを消す方法と注意点

URLが気になるのは企業サイトくらいだと思うので、個人で運営する分にはそのままでもいいと思います。

  • functions.phpで消せる。
  • パーマリンクの設定は「基本」か「カスタム構造(条件付)」に変える。
  • カテゴリーと固定ページのスラッグ名はダブらないようにする。

-ワードプレス
-