WordPressのパーマリンクからカテゴリーベースを取り除く方法

WordPressのパーマリンクは、デフォルトの状態でカテゴリー以下を表示した場合、カテゴリーベースが含まれます。
結構文字数が取られるため、URLを少しでも短くするなら取り除いておきたいところなんですよね。ということで、今回はそんなカテゴリーベースをサクッと取り除く方法を紹介します。

“カテゴリーベース”とは?

Photo:Wordpress Outfit By:Carlos Varela
Photo:Wordpress Outfit By Carlos Varela

“カテゴリーベース”は、カテゴリーページ、あるいはカテゴリー名を含むパーマリンクの記事ページを表示させた際に含まれる/category/という文字列のこと。

通常、WordPressでは以下のパーマリンクが出力されます。

http://example.com/category/wordpress/

今回紹介する方法で、以下のように短くすることができます。

http://example.com/wordpress/

“カテゴリーベース”を取り除く方法

プラグインを使う

まずひとつめの方法が、プラグインを利用するというもの。
有名ドコロだと、「WP No Category Base – WPML compatible」でしょうか。

WordPress.orgに登録されているものはバージョン1.1.0で2年以上更新されていませんが、Githubのほうは新たに1.1.5がリリースされています。

この他にも同様の機能を持つ、「FV Top Level Categories」などがありますが、総じて日本語がスラッグに含まれている場合に404ページヘ飛ばされてしまう問題があるので、別途回避策を講じなければなりません。

パーマリンク設定で取り除く

続いて紹介するのが、WordPressのパーマリンク設定からちょろっと設定を変更するだけの、どシンプルな方法です。

WordPressのダッシュボードから、[設定]→[パーマリンク設定]へ進み、設定画面のオプションにあるカテゴリーベースを以下のように変更します。

パーマリンク設定

カテゴリーベースに、.(ドット)を入力し、[変更を保存]するだけという簡単さ。
これだけでURLから/category/が取り除かれた状態になります。

ただ、これにも制約があって、パーマリンクが/%category%/%postname%/という構造だと、サブカテゴリーを含むページを表示したとき、404エラーになってしまうんですね。

/%category%/%postname%.htmlという構造では問題なく表示されるため、当ブログでは長らくこの方法を採用してきました。

この方法はパーマリンク構造を変える必要が出てくるので、すでに運用しているWordPressサイトやブログだと、URLの変更を余儀なくされてしまいます。
変更することによって、ソーシャルメディアのシェア数などはリセットされてしまうので、注意して実施するようにしましょう。

置換して取り除く

上記の「パーマリンク設定で取り除く」方法と同じパーマリンク構造でなきゃいかんのですが、カテゴリーベースにドットを打つよりも、こちらを採用しておくべきですね。当ブログもこの方法に切り替えました。

というのも、「パーマリンク設定で取り除く」と、URLの見かけ上ではカテゴリーベースが削除されているんですが、システム的には/caegory/.に置き換わっているに過ぎず、canonical属性を始めとして、実際のURL出力は、

http://example.com/./wordpress/

となってしまっています。このこと自体、かなり以前から認知していたものの、実際の表示上は問題ないということもあってそのままにしていました。

とは言え、URL正規化を示すcanonical属性に出力されているURLが上のようなものでは、SEOで重大な問題になりかねません。
そこで、functions.phpにカテゴリーベースを置換してしまう記述を加えました。

この方法で実装する場合、先の「パーマリンク設定で取り除く」方法でカテゴリーベースに.を入力している場合、.を削除して、初期状態に戻しておく必要があります。

結論的にオールマイティーに、かつ簡単に取り除くなら、やっぱりプラグインを利用したほうがいいのかなと思います。

ただ、プラグインを利用する分、多少の負荷がかかってくるので、そういうのが嫌だという場合はプラグインレスの方法を採用するのがいいかも。
まぁ、そこそこ長く運用していると、いずれの方法もURL変更の必要性が生じるので、結局のところどちらを採るかは運用者次第。

こういうのはサイトの構築段階で決めておきたいですね。