
- 現役Webマーケター
(元Webディレクター) - 東証一部上場の不動産系企業で勤務
- 最高収益:月間30万円
WordPressのデフォルトのパーマリンク設定では、カテゴリー一覧ページのURLに「category」という文字列が入ってしまいます。
気にならない人は無視されていると思いますが、できればすっきり見せたいので削除したいという方も多いと思います。
今回は、WordPressのカテゴリーベース「category」を削除する方法について説明していきます。
カテゴリーベースとは、WordPressでカテゴリーであることを示すために、カテゴリーページのURLに自動的に入る文字列になります。カテゴリーのスラッグ名に「category」という文字列が入ってしまいます。
https://nuko-blog.net/category/web/
タグもカテゴリー同様にタグベースが存在します。
しかしタグに関しては、削除することは可能ですがしない方が良いでしょう。
というのもタグベースまで削除してしまうと、カテゴリーと同じ階層になってしまうので、混合しやすいURL構造になってしまいます。
https://nuko-blog.net/tag/wordpress/
カテゴリーベースの「https://nuko-blog.net/category/web/」の「category」を任意の文字に変更するのはとても簡単です。
WordPressの管理画面から左メニューの「設定」→「パーマリンク設定」をクリックします。
パーマリンク設定のオプションから変更することができます。
デフォルトでは空欄になっており、空欄の場合は「category」が表示されるようになっています。
「category」ではなく「topics」という文字列にしたい場合、上記画像のようにカテゴリーベースの入力欄に文字列を入力して保存します。
色々試したのですが、「WP No Category Base」を使うのが一番確実かと思います。
複雑な初期設定もなく、プラグインをインストール・有効化するだけで、カテゴリーベースが削除されます。ちなみに「category」付きのURLにアクセスがあった場合、「category」無しのURLにリダイレクトしてくれるので、リンクが切れるという心配もありません。
プラグインのインストール・有効化については、下記を参考にしてください。
あまりプラグインを入れたくないという方向けにおすすめなのが、「function.php」でURL生成ロジックを変更して削除する方法がおすすめです。
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');
上記のソースコードを「function.php」に追記するだけで、「category」を置換して非表示にしてくれます。
カテゴリーベースという項目に「.(ドット)」を入力することで、簡単に「category」を削除することができます。
上記の場合、共通設定の項目でパーマリンクのカスタム構造を「/%category%/%postname%.html」とする必要があります。
「.html」を付けた形でないとサブカテゴリーページが404エラーになります。