スポンサーリンク

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」を使っているので問題なかったのですが、偶々パーマリンクを変更し忘れたのでしょうか?

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

WordPressのパーマリンクからカテゴリーベースを取り除く方法
WordPressのパーマリンクには、カテゴリー以下を表示させると、カテゴリーベース(/category/)が含まれます。これを削除してすっきりしたパーマリンクにする方法を紹介します。

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');

コメント

  1. もふもふ より:

    毎回

    $wp_rewrite->flush_rules();

    を呼び出すようなダメコードを紹介するのはよくないと思います。
    知らない人はそのままコピペしてしまうんですよ。

    https://torounit.com/blog/2015/09/02/2077/