WordPress

WordPressのURLからcetegoryを消す方法

WordPressのカテゴリーページって意識していますか?

WordPressで記事を書いた時にカテゴリーを設定していると思いますが、同じカテゴリーに設定した記事の一覧ページになります。

例えば、Appleというカテゴリーを使っている場合、カテゴリーページのURLは /category/apple/ というようになります。

ただ、この category という部分いらないのにー!!っていう人のために、この部分を消す方法を紹介していきます。

categoryを消す効果について

SEOに効果があります!という記載のあるサイトもありますが、正直、意味はないと思います。

Googleの検索結果で上位に表示されるサイトでも、categoryが入っているサイトはたくさんあります。

ではなぜか?と言えば、URLをスッキリ見せたい。というのが全てです。

なので、個人ブログの場合はそこまで気にする必要はないです。

コーポレートサイトなどでWordPressを使うと、クライアントによっては自分の意図したURLじゃないからリリースできない!とまで言ってくる人もいるのですが(笑)

categoryを消す方法

本題のURLから category の階層を消す方法については、僕の知っている限りでは5種類あります。

オススメは一番最初の「WP No Category Base」を使う方法です。

プラグインを使わずに対応する場合は組み合わせる必要があり、動作確認も面倒なのでオススメしていません。

プラグイン「WP No Category Base」を使う

WP No Category Base

一番お手軽で簡単です。戻したい時もプラグインを無効化するだけで、サブカテゴリーにも対応していますし、categoryをつけたURLでアクセスがあった場合にリダイレクトもしてくれる親切設定です。

ただ、日本語のカテゴリースラッグ(URL)を使っている場合など、404になるケースがあるようなのでご注意ください。

プラグイン「Yoast SEO」を使う

Yoast SEO

試していないのですが、SEO対応用にYoast SEOを入れている場合、Advanced設定で対応可能なようです。

SEO関連の一括で対応できるプラグインなので、category の階層を取るためだけに入れるとサイト全体が重くなりかねないので、ご利用は慎重に。

function.phpでURLの生成ルールを変更する

functions.phpに追記するだけなので、ライトに対応可能ですが、サブカテゴリーに対応していないです。サブカテゴリーまで対応するには調整が必要ですがリダイレクトのループなどの考慮がいるので自己責任でお願いします。

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

.htaccessで /category/ なしのURLに飛ばす

ページ内のリンクが変わらないので、オススメはできませんが、手軽に対応可能で、戻すのも簡単です。

RewriteEngine On
RewriteRule category/(.+)$ /$1 [R=301,L]

パーマリンク設定で乗り切る

パーマリンクの共通設定で カスタム構造を下記のように設定します。

/%category%/%postname%.html

その後、カテゴリーベースに「 . 」(半角のドット)を入力して設定完了です。

ただし、この場合、各投稿のURLが変わってしまうので、既に運用を行なっている人は .htaccessやリダイレクトのプラグインでリダイレクト設定を入れて古いURLでのアクセスを救ってあげる必要が出てきます。

tagについて

タグについても同じようにURLに/tag/が入り、同じような手順で消すことは可能なんですが・・・

categoryとtag両方とも1階層上げてしまうと、カテゴリーとタグで同じスラッグがあった時に、飛ばしたいページとは違うページに遷移してしまうことになるので、お勧めできません。

まとめ:category を消すオススメの方法

プラグインが使える場合はプラグインで対応する方が楽です。

サブカテゴリーを使ったり、複雑に組んで行く予定がある場合、個別で調整が発生する可能性もあり、プラグイン以外の方法では難しいかもしれません。

Yoast SEOを導入済みの場合はYoast SEOで対応し、それ以外はWP No Category Baseを使うというのがオススメになります。