WordPress

WordPress - カテゴリページのURLから category を消す方法

URLの階層は最小に抑えたほうがSEOに効く
WordPressのデフォルトの設定だと、カテゴリページのURLに無駄なcategory階層が入ってしまう
無駄なcategory階層を取り除いて、URL階層構造をスッキリさせる方法のメモ

どんな方法があるのか?

  1. パーマリンク設定をカスタマイズ
  2. functions.phpにコードを追加
  3. .htaccess or nginx.conf のコードを書き換える
  4. プラグインを使う

パーマリンクの設定をカスタマイズする方法

管理画面 > 設定 > パーマリンク設定
を開いて、カテゴリーベース という項目に.を入力

パーマリンクのカスタム構造を
/%category%/%postname%.html/
とする

ただし、パーマリンクが/%category%/%postname%/という構造だと、サブカテゴリーを含むページを表示したとき404エラーになってしまう

URLの末尾に.htmlがついてしまうのが気にならなければこのやり方が便利

※ 既にサイトを公開していてインデックスされている場合はリダイレクトの設定を忘れずに
※ カテゴリのURLを削った場合、タグのURLは削らない方がいい(名前がかぶってしまった時に面倒になる)

プラグイン「No Category Base(WPML)」を使う方法

プラグインをインストールして有効化するだけで、カテゴリページのURLからcategoryの文字を消してくれる
categoryありの旧URLにアクセスしても、リダイレクトしてくれる

管理画面 > 設定 > パーマリンク設定
を開いて、カテゴリーベース という項目に.を入力

パーマリンクのカスタム構造を
/%category%/%postname%/
とするのも忘れずに

サイトマップの生成に使用されるURLもcategoryなしのURLなのかを調べてみたところ、小カテゴリが存在している場合親カテゴリのURLが生成されないことが判明しております。

ひとまずこれを採用

上記事象が判明したため、Remove Category URLに乗り換えることに。

プラグイン「SEO by Yoast」を使う場合

「SEO by Yoast」 というSEO対策用のプラグインの設定項目の一つとして、カテゴリページのURLからcategoryを削除するものが入っている

-WordPress