プラグインなしでカテゴリーページのURLからcategoryを除去する方法

プラグインなしでカテゴリーページのURLからcategoryを除去する方法

プラグインなしでカテゴリーページのURLからcategoryを除去する方法

WordPressのカテゴリーページは、以下のようにURL内に「category」という文字列が入ります。

https://techmemo.biz/category/wordpress/

このままでも特に問題はないのですが、URLが長くなってしまうので「category」を除去したい、という場合もあるかと思います。

FV Top Level CategoriesWP No Category Base – WPML compatibleなどのプラグインを使えば、簡単にcategoryを除去することができますが、今回はプラグインを使わずに除去する方法を紹介したいと思います。

functions.phpを使ってcategoryを除去する

まず1つ目が、functions.phpを使う方法です。以下のコードをfunctions.phpに追加することで、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');

上記は、DigiPressさんで紹介されていた方法で、パーマリンク設定が「/%category%/%postname%/」になっていて、サブカテゴリーが存在する場合は使えないということです。

.htaccessを使ってcategoryを除去する

2つ目は、.htaccessを使う方法です。.htaccessに以下を追加します。


RewriteRule ^category/(.+)$ http://yourdomain.com/$1 [R=301,L]

これもDigiPressさんで紹介されていた方法です。「yourdomain.com」の部分は、自サイトのドメインに変更してください。

上記を追加すると、全体としては以下のようになります。


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^category/(.+)$ http://yourdomain.com/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

あとがき

functions.phpを使うか.htaccessを使うかは、環境に合わせて判断しましょう。functions.phpや.htaccessの編集はよくわからないという場合は、無理をせずにプラグインを使うという選択肢もアリだと思います。

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です