WordPressのパーマリンクを自由にカスタマイズする方法とプラグイン
2016.08.15
WordPressのパーマリンクの2つのタイプ
パーマリンクとは、ブログの個々の投稿、固定ページ、カテゴリーなどの投稿一覧ページへの恒久的(パーマネント)なURLの総称で、WordPressでは2つのタイプのパーマリンクが指定できます。一つ目はインストール直後から利用できる初期設定のID番号のパラメーター指定式(動的URL)で、記事投稿なら ?p=投稿ID
や 固定ページなら?page_id=ページID
という表記方法になり、二つ目はユーザー自身がurlを決められる静的URLになります。
以下は動的URLと静的URLの違いの例になります。
- 動的URL
http://example.net/?p=5
- 静的URL
http://example.net/2016/08/15/wordpress-static-url
動的URLで利用できるパラメーター
このURLで利用するパラメータはクエリ変数と呼ばれるもので、WordPress Query Vars(WordPress Codex 日本語版)
にあるようにたくさんの変数が存在します。
使用頻度の高いものを下記に挙げます。
/?p=投稿ID | 投稿ページを表示 |
---|---|
/?page_id=固定ページID | 固定ページを表示 |
/?cat=カテゴリのterm_id | カテゴリ記事一覧ページを表示 |
/?tag=タグのterm_id | タグ一覧ページを表示 |
/?year=西暦で四桁の数字 | 指定年の投稿一覧を表示 |
/?monthnum=二桁の数字 | 指定月の投稿一覧を表示 |
/?day=二桁の数字 | 指定日の投稿一覧を表示 |
/?m=西暦年月で六桁の数字 | 指定年月の投稿一覧を表示 |
/?s=検索文字列 | 検索文字列の検索結果一覧を表示 |
これは、パーマリンク設定後は隠れてしまいますが、実はずっと利用できるパラメータなのです。 特に /?s=検索文字列
覚えておいて損はないパラメーターで、WordPressを利用しているサイトで検索窓がない場合にURLを直打ちする事でサイト内の文字列検索が利用できます。
実はこのままパラメータ付きの動的URLで運用しても特にSEOに影響ありません
googleの公式ブログDynamic URLs vs. static URLsでもそのように述べられていますので、いままでパラメータ付きのURLで運用されている方は、慌てて変える必要はありません。
ただ、このままだと、人にURLを伝えたり、google analytics等の画面で、パラメータのページばかりが表示されたりと、何かと不便ではあります。これからサイトを立ち上げる方は静的URLのパーマリンク設定をする事をお勧めします。
静的URLのパーマリンク設定
WordPressのパーマリンク設定は「設定」>「パーマリンク設定」で変更します。
初期設定以外のものに変更すると、パラメータ付きの動的URLではなく静的URLに変更されます。
投稿ページのURLは以下のようにカスタマイズできます。
パーマリンクのカスタム構造設定で入れられるパラメーターでよく使うものは下記になります。
%postname% | 投稿記事のスラッグで指定した文字列 |
%category% | カテゴリー設定のスラッグで指定した文字列 |
%year% | 投稿日の年 |
%monthnum% | 投稿日の月 |
%day% | 投稿日の日 |
上記の方法で設定を行えばわりと柔軟な形に投稿記事のURLは変更できます。
固定ページ、カテゴリーやタグ一覧、記事日付アーカイブのページは変更できません。
これらを変更するために、WordPressでは関数が用意されています。
リライトルール(rewrite rules)の設定
add_rewrite_ruleを利用すると、現在の設定に追加で自由な設定が追加できます。
add_rewrite_rule($regex, $redirect, $after);
下記の例は固定ページのIDをページ名として利用する例です。
http://example.net/mypage_[固定ページID]
のようなURLを作成した場合、下記をfunctions.php
に記述します。
function custom_rewrite_basic() { add_rewrite_rule('mypage_([0-9]+)/?$', 'index.php?page_id=$matches[1]', 'top'); } add_action('init', 'custom_rewrite_basic');
カテゴリー毎のアーカイブのリンクURL
以前の記事「WordPressのアーカイブをカテゴリを指定して表示する」で、カテゴリー毎のアーカイブの作り方を紹介しましたが、パーマリンクの設定をしていても cat=13 等の パラメータ付きURLになってしまいした。
今回は上記の add_rwrite_ruleを利用して、以下のように パーマリンクを設定します。
http://example.net/201608?cat=10
を
example.net/201608/カテゴリー名
としたい場合、functions.php
に以下のように設定します。
add_action( 'init', 'custom_add_rewrite_rule'); function custom_add_rewrite_rule() { add_rewrite_rule('([0-9]{4})/([0-9]{1,2})/(.+?)/?$', 'index.php?year=$matches[1]&monthnum=$matches[2]&category_name=$matches[3]', 'bottom'); }
パーマリンクをカスタマイズするプラグイン
リライトルールは正規表現を理解している必要があるため、自由度はありますが少し敷居が高いですね。
- WP No Category Base
カテゴリー名のURLを利用する時は /category/カテゴリー名/ が利用されますが、
このプラグインでは/category/ を省略します。 - Custom Permalinks
各投稿ページ、固定ページ、カテゴリー一覧、タグ一覧のページのURLを個別に設定できるプラグインです。 - .html on PAGES
単純にURLの最後に.htmlを追加し、HTMLファイルで作成したかのように見せる事ができます。 - Debug Bar
直接何かをしてくれるプラグインではありません。サイトのカスタマイズ時に、いろいろな部分を可視化してくれるツールで、現在のページがどのリライトルールにマッチしているかも表示できます。
まとめ
このようにWordPressにはパーマリンクを変更する方法がいくつもあります。一度公開されたページは、検索結果にずっと残ります。是非わかりやすいURLにする事をおすすめします。