WordPress のURLは、デフォルトでは

http://example.com/?p=N

という形ですが、これはいろいろな形に変更することができます。

例えばこのようにカテゴリ名を入れたり日付や時間を入れたり、
また、投稿記事のタイトルを入れることもできます。

http://example.com/2011/01/book/wagahai_ha_nekodearu/

これをパーマリンクといいます。

URLですからコロコロ変えるわけにはいきません。
そんなわけで、どういう形式にするのが良いのか考えていきます。

 

 

構成タグ

パーマリンクは構成タグの組み合わせで設定することができます。

構成タグ一覧

%year%
投稿年・4桁 (例)2004
%monthnum%
投稿月 (例)05
%day%
投稿日 (例)28
%hour%
投稿時刻の「時」 (例)15
%minute%
分 (例)43
%second%
秒(例)33 日時のみで設定する場合は秒まで入れないと個別投稿を示さない
%postname%
投稿タイトル (投稿スラッグ)。タイトル「This Is A Great Post!」なら URI は「this-is-a-great-post」。
パフォーマンス上の理由で %postname% で始まるパーマリンクは非推奨
%post_id%
投稿固有の ID 番号。サーバ移転時などはIDが変わる可能性があり。(例)423
%category%
カテゴリー名 (カテゴリースラッグ)。子カテゴリのときは親子とも表示。
パフォーマンス上の理由で %category% で始まるパーマリンクは非推奨
%tag%
タグ名 (タグスラッグ)。
パフォーマンス上の理由で %tag% で始まるパーマリンクは非推奨
%author%
著者名。
パフォーマンス上の理由で %author% で始まるパーマリンクは非推奨

パーマリンクの注意点

パーマリンクを設定するにはいくつかの注意点があります。
公式サイトに記載されているのは

  • パーマリンクが%post_id%あるいは%postname% で終わるようにして、各パーマリンクが個別投稿を示すようにしてください。
  • パフォーマンスの観点から、パーマリンク構造がカテゴリ名、タグ名、著者名、投稿タイトルフィールドから始まるのは好ましくないといえます。これらはテキストフィールドなので、パーマリンク構造の先頭に用いると、WordPress が投稿とページを区別するのに時間がかかり、代償として、WordPress が余計な情報をデータベースを蓄えることになります。
    したがって、/%year%/%postname%/ や、さらには /posts/%postname%/ のように、少なくとも 2つのパスセグメントを含めるのがベストでしょう。
  • 一つの投稿に複数カテゴリを指定していても、パーマリンクには一つしか表示できません。一番小さいカテゴリIDが使われます。アクセスはどのカテゴリからでも普通にできます。
    パーマリンク構造に %tag% を使用している場合も、同様です。
  • 一日に一投稿しか公開しないので %year%%monthnum%%day% というパーマリンクを使用したいと思うかもしれませんが、このリンクはその日の全投稿のアーカイブとして生成されることに注意してください。個別投稿へのリンクは、少なくとも %year%%monthnum%%day%%hour% にする必要があります。
  • メール、コメント投稿やチャット等で、長いパーマリンクを使うと、途中で切断されたり、最初のセクションだけがリンクと認識されて残りの部分がテキストと認識されたりします。
    例えば http://example.com/wagahai-ha-nekodearu-namaeha-madanai-dokodeumaretaka-tonto-kentougatsukanu
    とした場合、メールの自動改行などで、http://example.com/wagahai-ha-nekodearu までしかurlとして認識してくれず、「ファイルがない」とエラーを返される場合があります。

投稿ID( postID )の問題点

パーマリンクの形式として一番手っ取り早いのが投稿ID( postID )を使うことなのですが、これには問題があります。
サーバの移転などでデータを移動させた場合、記事の削除などで欠番になっていた番号は自動的に詰められてしまうため、サーバ移転前と移転後では投稿IDが違ってしまうのです。

この投稿IDは通常の投稿だけでなく、自動保存や画像のアップロードなどでも自動で番号が振られます。ですから、欠番をつくることなく利用することはかなり難しいと思われます。

サーバ移転以外にもWordPressの調子が悪くなったときの再インストールとか、思わぬところでデータの入れ替えをすることがでてくるので、投稿IDの問題を念頭に置き、パーマリンクを決めなければいけません。

パーマリンクを考える

いろんなパーマリンク形式ごとに考えてみました。
(公式)公式サイトの引用です。

/?p=N
表示例:http://example.com/?p=123
  • デフォルトの形式
  • 全てのサーバ環境で動く(公式)
  • 他のオプションが付くと見苦しくなるので好ましくない(公式)
  • pageIDを使うのでサーバ移転時などにURLが変わってしまう

 

/category/postname/
設定 :/%category%/%postname%/
表示例:http://example.com/book/wagahai_ha_nekodearu/
  • 最も一般的で万能な形(公式)
  • パフォーマンスの観点から、パーマリンク構造がカテゴリ名、タグ名、著者名、投稿タイトルフィールドから始まるのは好ましくない(公式)
  • 一つの投稿に複数カテゴリを指定していても、パーマリンクには一つしか表示できない(一番小さいカテゴリIDが使われる)。アクセスはどのカテゴリからでも普通にできる(公式)
  • スラッグを設定すればスラッグ名、入れなければ記事のタイトルが表示される。ただし、日本語の場合はエンコードされて表示される( /book/%E5%90%BE%E8%BC%A9%E3%81%AF%E7%8C%AB%E3%81%/ )
  • スラッグをいちいち設定しなければいけないので面倒
  • カテゴリ名を使うのでカテゴリを変更したらURLが変わる
  • カテゴリ名や記事の内容がURLに表示されるためseo的にちょっと有利かもしれない
  • 普通のサイトっぽいURLになるので、WordPressをCMSとして使うサイトでよく利用されている
  • 名前がかぶった場合は「slugname-2」となどと番号が自動的に追加される

 

/year/month/day/postname/
表示例:http://example.com/2011/01/01/wagahai_ha_nekodearu/
  • 最も一般的で万能な形(公式)
  • ダッシュボードのパーマリンク設定「日付と投稿名」
  • スラッグをいちいち設定しなければいけないので面倒
  • 記事のタイトル(スラッグ)がURLにあるのでseo的にちょっと有利かもしれない
  • ブログ形式のサイトでよく利用されているような気がする
  • 名前がかぶった場合は「slugname-2」となどと番号が自動的に追加される

 

/archives/postID
表示例:http://example.com/archives/123
  • ダッシュボードのパーマリンク設定「数字ベース」
  • pageIDを使うのでサーバ移転時などにURLが変わってしまう
  • 「archives」はpostsなど他の名称に変更可能。
  • 2つ以上のパスセグメントを含めるのがベスト(公式)なので、「archives」はpostsなど他の名称に変更は可能だが削除(http://example.com/123 という形式)しないほうが良い

 

/postname/
 表示例:http://example.com/wagahai_ha_nekodearu/

  • ダッシュボードのパーマリンク設定「投稿名」
  • パフォーマンスの観点から、パーマリンク構造がカテゴリ名、タグ名、著者名、投稿タイトルフィールドから始まるのは好ましくない(公式)
  • スラッグを設定すればスラッグ名、入れなければ記事のタイトルが表示される。ただし、日本語の場合はエンコードされて表示される( /book/%E5%90%BE%E8%BC%A9%E3%81%AF%E7%8C%AB%E3%81%/ )
  • スラッグをいちいち設定しなければいけないので面倒
  • 名前がかぶった場合は「slugname-2」となどと番号が自動的に追加される

 

/year/month/day/hour/minute/second/
 設定 :/%year%/%monthnum%/%day%/%hour%/%minute%/%second%/
 表示例:http://example.com/2011/01/01/01/23/45/

  • 一日に一投稿しか公開しないので %year%%monthnum%%day% というパーマリンクを使用したいと思うかもしれませんが、このリンクはその日の全投稿のアーカイブとして生成される(公式)ので、個別投稿のリンクとして使うには上記のように秒まで入れないとダメ
  • URLに投稿日だけでなく投稿時間も表示されるので気分的に嫌な人もいるかも(公開日時を修正することで変更可能)
  • URLからサイトの中身が予想できない
  • サイト移転しても、カテゴリ変更しても、記事タイトル変更してもURLには変更がないので、サイト運営側としては便利な形式だと思う(ただし公開日時を変更するとURLが変わる)

 

/category/year/month/day/hour/minute/second/
設定 :/%category%/%year%/%monthnum%/%day%/%hour%/%minute%/%second%/
表示例:http://example.com/book/2011/01/01/01/23/45/
  • 一日に一投稿しか公開しないので %year%%monthnum%%day% というパーマリンクを使用したいと思うかもしれませんが、このリンクはその日の全投稿のアーカイブとして生成される(公式)ので、個別投稿のリンクとして使うには上記のように秒まで入れないとダメ
  • パフォーマンス上の理由で %category% で始まるパーマリンクは非推奨 (公式)
  • カテゴリ名を入れてseo対策とURLからサイトの内容がぼんやりでもわかるようにする
  • カテゴリを変更するとURLが変わる

面倒くさがりの投稿スラッグあれこれ

個人的には投稿スラッグを使ったパーマリンクが一番良いと思います。

ただ投稿スラッグの設定が面倒くさい。

投稿タイトルを英語にするだけでも手間なのに、投稿数が増えてくると、付けようと思う投稿スラッグ名が既出かどうかいちいち確認する手間も増えてきて、ますます面倒になっていきます。

投稿スラッグ名を簡単につけられるようになればパーマリンクもさほど悩まなくなるような気がします。

そんなわけでいろいろ考えてみました。

【案1】投稿内容のキーワードと投稿日を投稿スラッグにする。

スラッグ名:wordpress-permalink-20110101
表示例:http://example.com/2011/01/wordpress-permalink-20110101/

キーワードを入れるのでURLから内容が推測できますし、seoにも多少効果があります。日付を入れるので確実にユニークになります。
反面、投稿スラッグが冗長になり、ちょっと不格好になります。

 

【案2】スラッグ名がかぶった時は自動的に番号が追加される機能を利用して、同じスラッグ名をあえて付ける。

スラッグ名:post
表示例:http://example.com/2011/01/post-2/

例えば、スラッグ名をすべて同じ「post」という名前にすると、二つ目以降の記事は「post-2」「post-3」と自動的に「スラッグ名-連番」というカタチに変更されます。
これを利用して、あえて同じスラッグ名を付けます。
カテゴリごとにスラッグ名を変えたりとかしても良いかもしれません。

 

投稿スラッグ関係のプラグインもいくつかあるようですので、それを使うのも良いと思います。

このサイトのパーマリンクを考える

このサイトは

/year/month/dayhourminutesecond/

としています。

カテゴリは変更する可能性が高いし、記事タイトルも変えるかもしれないし、そもそもサイトの方向性すら決まってないし、上で投稿スラッグがどーとか偉そうに語りましたが、やっぱり投稿スラッグの設定はよく忘れるし面倒だし。

URLに時間まで入るのは好きじゃないのですが、嫌なら公開日時を修正すれば良いし、くっつけちゃえばパッと見わからないし、なんかもうこれでいいかな、と。

というか、いろいろ考えてたらなんかもう面倒くさくなっちゃって……