WordPressではブログ投稿のカテゴリを作ると「category/」が生成されてしまう

WordPressでブログ投稿のカテゴリを作ると、ドメインとカテゴリ名の間に「category/」が生成されてしまいます。

ドメイン名/category/カテゴリ名

これを、

ドメイン名/カテゴリ名

としたい訳です。

なぜ自動的に「category/」が入る仕様になっているかというと、これは私見ですが、固定ページのURLとブログ投稿を区別するためではないかと思います。

WordPressの場合は固定ページでいわゆるレギュラーページを制作し、ブログ投稿は別で管理する仕様になっています。このレギュラーページとブログ記事を区別するために「category/」が自動的に入る仕様になっている訳です。たぶん。

プラグイン不要で「category/」を削除する方法

プラグインでもできるのですが、プラグインを入れるとWordPressが重くなる可能性もありますので、今回はプラグイン不要で実装する方法をご紹介します。

設定前ですが、以下のようにcategoryがURLの中に表示されています。

まずはWordPressのダッシュボードへ行き、外観を押します。するとその下のメニューが出てくるので、テーマエディターを押します。

テーマエディターは、テーマを構成するソースコードが収められている箇所で、下手に更新するとバグってしまうこともある、ちょっと怖い場所です。

このテーマファイルの中のfunctions.phpというファイルを開きます。

開いたら、何も考えずに以下のソースコードを貼り付けます。

// パーマリンクカテゴリ削除
add_filter(‘user_trailingslashit’, ‘remcat_function’);
function remcat_function($link) {
return str_replace(“/category/”, “/”, $link);
}
add_action(‘init’, ‘remcat_flush_rules’);
function remcat_flush_rules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_filter(‘generate_rewrite_rules’, ‘remcat_rewrite’);
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;
}

こんな感じです。何も考えずに、一番下に記載します。そしてファイルを更新します。これだけです。

サイトを表示してリフレッシュすると、categoryが削除されていることが確認できます。