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が削除されていることが確認できます。