WordPressでパーマリンク設定を「投稿名」などに変更した際、カテゴリーページのURLに自動的に「category
」というスラッグが挿入されます。
例:https://example.com/category/news/
この「category」はSEO的にもユーザー体験的にも不要と感じるケースが多いのではないでしょうか。
今回は、カテゴリーページのURLから「category」を削除する方法について、プラグインを使わずに実装する方法を中心に解説します。
方法1:プラグインで削除する(簡単だけど注意点あり)
例えば、Yoast SEOなどのSEO系プラグインには、「category
をURLから削除する」オプションがあります。
メリット
- 設定が簡単
- 他のSEO設定と一元管理できる
デメリット
- 不要なプラグインを増やしたくない場合には不向き
- 他にSEO系プラグインを導入していると競合の可能性あり
方法2:functions.phpにコードを追加して削除する(おすすめ)
プラグインを使わずに実装したい場合は、以下のコードを**functions.php
**に追加するだけで、カテゴリースラッグの「category」を除去できます。
コード例:
/**
* カテゴリーページのURLから/category/を削除
*/
function remcat_function($link) {
return str_replace("/category/", "/", $link);
}
add_filter('user_trailingslashit', 'remcat_function');
function remcat_flush_rules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_action('init', 'remcat_flush_rules');
function remcat_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', 'remcat_rewrite');
補足:
上記コードを追加した後、「パーマリンク設定」ページを一度保存してください。これにより、リライトルールが更新されます。
functions.php
はテーマによって異なるため、子テーマを使用している場合は子テーマ側に記述するようにしてください。
まとめ:URLの最適化でユーザー体験もSEOも向上
WordPressを運用していると、「category」という不要なスラッグに悩まされる場面は多いはずです。
今回ご紹介したように、functions.phpを使えば、プラグインに頼らずスッキリとURLを整えることができます。
構築のたびに毎回書くのが面倒という方は、functions.php用のカスタムテンプレートとして保存しておくと便利です。
今後のWordPress開発に、ぜひ役立ててください。