注意! WordPress 3 系では動作しません。
今年の 6 月くらいから、 WordPress のパーマリンク(個別記事の URL )を変えたくて仕方がなかった。でも、パーマリンクの設定で変えてしまうと、過去の記事にも反映されてしまうので、リダイレクトさせないといけないし、日本語タイトルが投稿スラッグ名にそのまま入っている記事がたくさんあるので、それらを英語に書き換えないと、とてつもなく長い URL になるな、なんて思っていたら、かなり大変な作業になって途中で放棄していた。でもやっぱり個別記事の URL を変えたくなって調べていたら、 Advanced Permalinks というプラグインで POST ID によってパーマリンクを振り分けることができるらしい。おおすばらしい!
ということで、 Advanced Permalinks をインストール。管理画面の設定のパーマリンクに上部メニューが追加されて、その Posts というメニューを選択すると、 Start ID と End ID とパーマリンクの設定ができるので、今まで使っていたパーマリンクを設定しておいた。そしてデフォルトには、これから使うパーマリンクを設定。
この設定だけだと、カテゴリの表示がうまくいかなかったので、カテゴリベースを設定(空欄だとうまく動作してくれないよう)、 Advanced の Author pages と Category pages にもデフォルト値を設定(同じくなぜか空欄だとうまく動作しない)、 Start ID に次の記事の番号と End ID に -1 を設定して、新しいパーマリンクを設定、これでやっとうまく動作してくれました。
今までは投稿日時を URL にしていたのだけれど、これからは、「年 / 月 / 投稿スラッグ」という形にしました。わたしの投稿頻度だと、日にちまで絞らなくてもそこそこのレスポンスで記事を探し出してくれるかな、と。あと、 URL の最後にスラッシュを付けるか付けないか迷ったのだけれど、「クールな URI は変わらない」を参考に最後のスラッシュはなしにした。「クールな URI は変わらない」には件名を URI に含むのは最初はうまくいくけどあとから破綻する的なことが書かれているけど、破綻したらまたその時考えればいいや、と思うことにした。要するにブックマークした記事とかが 404 になるのを避けた方がいいっていうことだから、そのときリダイレクトかけます。
また、 Advanced Permalinks には古いパーマリンクを新しいパーマリンクにリダイレクトする機能もついているので、投稿スラッグを英単語化できたら、その際には全記事リダイレクトするかも。ドメインの www も取りたいし。
Advanced Permalinks の導入によって、サーバー内の処理が増えてアクセスが多少遅くなると思うけど、そこらへんは目をつぶることにします。ということで、この記事をテストを兼ねて投稿するのです。
パーマリンクの設定を間違えると、投稿時に誤ったパーマリンクで twitter と連携しちゃうのね。うーん。手順等を要検討だなぁ。