wordpressで起こってしまうURL構造でのトラブルの1つによく挙げられるのが、 URL構造の中に「/category/」が入ってしまう件です。
このページでは、URLに入るcategoryを取り除く方法について紹介していきます。
wordpressでは、デフォルトで「投稿」と「固定」の2種類のページの作成タイプがあります。 「投稿」で作成したページは、カテゴリーで紐づきされます。
ですので、「投稿」で作成したページのURLは「ドメイン/カテゴリー名/投稿作成ページのスラッグ」といった形になります。
(※パーマリンク設定がカスタム構造の「/%category%/%postname%/」の場合)
しかし、カテゴリーの記事一覧(archive.phpやcategory.php)のURLは「ドメイン/category/カテゴリー名/」といった形で自動で「category」というパーマリンクが付与されて表示されてしまいます。
このcategory部分が邪魔になっています。理想の形は「ドメイン/カテゴリー名/」になります。
それを解消する方法として3種類あります。
それでは、以上の3種類の方法についてご紹介していきます。
category問題を解消するプラグインは、「No Category Base (WPML)」です。
(※過去は「WP No Category Base」でした)
WordPressの管理画面の左側のメニューにある [プラグイン] > [新規追加]から、プラグインの検索ページに移動をし、 ページ上部にある検索窓にプラグイン名を入力し、検索を行います。 プラグイン名は「No Category Base (WPML)」です。
ファイルを自分でアップロードする場合は、以下のページからプラグインのファイル一式をダウンロードできます。
アップロード場所は、サーバにあるwordpressディレクトリ内にある「plugins」内になります。
設定方法はいたって簡単です。設定というほどの設定はなく、インストール後に有効化をするだけで「category」が自動的に削除されます。
もし、プラグイン以外の方法に変更する場合は、有効化している「No Category Base (WPML)」を停止にしてください。
メリットは、インストールして有効化するだけでURLからcategoryを削除可能という、設定が簡単という点です。
デメリットとしては、多少サーバに負荷がかかる点と、プラグインの更新が途絶えたらwordpressの新しいバージョンに対応しなくなることや、セキュリティホールになる可能性があります。
先程、プラグインでの設定についてお伝えしましたが、もっと簡単に行える方法があります。
worpdressの管理画面にあるパーマリンクの設定を変更するだけでURLからcategoryを取り除けます。
ダッシュボードの左側のメニューにある[設定]>[パーマリンク設定]からパーマリンク設定画面に移ります。
カテゴリーベースという項目に「.(ドット)」を設定するだけです。
メリットは、こちらも設定が簡単という点です。
デメリットですが、この設定には問題があります。
サイトがシンプルな3階層の場合は問題ないようですが、 「ドメイン/カテゴリー/記事ページ」の形から外れてしまうと不具合が起きてしまうようです。 ですので、カテゴリーの親子では不具合のがでる可能性ありです。
ですので、この設定を使う場合は、サイトが3階層の場合でご使用いただければと思います。
これらの問題点を回避する方法は次の方法になります。
紹介した2つの方法だといくつか問題点があり、それを回避したいという人やプラグインはあまり入れたくないという方もいるかと思います。 最後の3つ目の方法として、functions.phpに記述して修正する方法について紹介していきます。
functions.phpに以下のコードを追記してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
function remcat_function($link) { return str_replace("/category/", "/", $link); } add_filter('user_trailingslashit', 'remcat_function'); function remcat_flush_rules() { global $wp_rewrite; $wp_rewrite->flush_rules(); } add_action('init', 'remcat_flush_rules'); function remcat_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', 'remcat_rewrite'); |
以上で、ファイルを更新すると、URLある/category/を/に置換して、表示をなくしてくれます。
注意点としましては、functions.phpに記述する方法でノーカテゴリーをする際 パーマリンク設定でカテゴリーベースに「.」を設定している場合は、「.」を削除して何も設定がない状態にしてください。
対処法 | メリット | デメリット |
---|---|---|
プラグイン 「No Category Base (WPML)」での対処 |
設定が簡単。 | ・サーバに負荷がかかる。 ・プラグインの更新が途絶えたら危険。 |
パーマリンク設定での対処 | 設定が簡単。 | ・3階層以上、カテゴリーの親子では不具合の可能性あり。 ・URLが自動挿入される箇所のcategoryに当たる部分に/./と入ってしまう。 |
functions.phpでの対処 | 今のところこの対処が完璧。 | PHPの記述に慣れている人向け。 |