WP パーマリンクの「category」を削除する

WordPressのカテゴリーページを見ると、URLに「category」という文字が入っています。
できればURLを短くしたいので「category」が表示されないようにしたい。

パーマリンク設定で変更する

一番簡単な方法が 設定 > パーマリンク設定 で、「カテゴリーベース」に「.(ドット)」をいれ、カスタム構造に「/%category%/%postname%.html」と入れる方法です。

ここでポイントはカスタム構造に「/%category%/%postname%.html」と入れる点。
最後に「.html」を付けなくてはいけないんですね。
私はMovable TypeからデータコンバートでWordpressを使い始めたので「.html」を付けるのは大歓迎でしたが、最初からWordPressを使い、すでに記事がたくさん入ってる方にはURLが変わるのでリスクがありますね。

置き換えで変更する

長らく上の方法でやっておりましたが、ある時アドレスが「http://sample.com/./tokyo/」となっているアドレスがあることに気がつきました。
基本「Custom Permalinks」を使っているので問題なかったのですが、偶々パーマリンクを変更し忘れたのでしょうか?

そこで「.(ドット)」を使わない方法を探したところ、こちらの記事が良かったのでその通りにさせて頂きました。

https://mbdb.jp/hacks/delete-category-base.html

functions.phpに次のコードを記載します。

function catbase_function($link) {
    return str_replace("/category/", "/", $link);
}
function catbase_flush_rules() {
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}
function catbase_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('user_trailingslashit', 'catbase_function');
add_action('init', 'catbase_flush_rules');
add_filter('generate_rewrite_rules', 'catbase_rewrite');

コメントを残す

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