
WordPressでパーマリンクの設定を【/%category%/%postname%.html】とした場合、記事のURLは【/
category/カテゴリー名/記事名.html】となってしまいます。
このURLの【/category/】は余分なので、これを消す方法です。
【/category/】を消す方法としては、次の3つの方法があります。
-
- パーマリンクの設定を変更してURLから【category】を消す方法
- プラグインを使ってURLから【category】を消す方法
- function.phpにコードを追加してURLから【category】を消す方法
パーマリンクの設定を変更して【category】を消す方法
この方法が一番簡単です。カスタマイズもプラグインの導入も必要ありません。
管理画面の「設定」→「パーマリンク設定」で共通設定を下記の【カスタム構造】にします。
【/%category%/%postname%.html】
そして下の【カテゴリーベース】に【.】を入力して、設定を保存します。
プラグインを使って【category】を消す方法
次はプラグインを使う方法です。
プラグイン「WP No Category Base」をインストールして有効化します。
特に設定は必要ありません。有効化するだけでOKです。
注意点としては、カテゴリースラッグが日本語の場合、404になる可能性がありますので、カテゴリースラッグは必ず英数字で設定してください。
function.phpにコードを追加して【category】を消す方法
3番目の方法はfunction.phpにコードを追加する方法です。
以下のコードをfunctions.phpに追記してください。
function rem_cat_function($link) {
return str_replace("/category/", "/", $link);
}
add_filter('user_trailingslashit', 'rem_cat_function');
function rem_cat_flush_rules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_action('init', 'rem_cat_flush_rules');
function rem_cat_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', 'rem_cat_rewrite');