[WordPress] 正規表現を利用したリダイレクトでカレンダーウィジェットから投稿を直接開く方法

WordPress本体

WordPressにデフォルトで用意されているカレンダーウィジェットってありますよね。そのカレンダーの日付をクリックした時に投稿一覧のスタイルが全文表示ならいいんですが、そうでない場合は該当する日付の投稿が1件でもわざわざ一覧形式で表示されちゃうのがちょっと嫌だなと思いまして。

もう1回クリックして開けば済む話ではありますが、更に日付を変えつつ何回かこの作業を繰り返す事になると結構煩わしくなってきます。

そこでキュピーン!と閃いたのが当エントリーで紹介する方法ですが、私がこれを何とかしたいと思ったサイトでは日記のように毎日1件だけ記事を投稿するというルールで運営しているので、日付とパーマリンクを紐付けられるのが幸いでした。

尚、投稿のパーマリンクがカレンダーの日付と何の関連も無い場合は当エントリーの方法ではどうにもなりませんので、それを期待してお越しいただいた方には大変申し訳ありませんがここで回れ右して下さい…いやもうなんかホントすいません。

当エントリーのカスタマイズで出来る事

例えば2020年3月1日の場合、カレンダーウィジェットのリンク先はこのようになっています。

https://example.com/2020/03/01/

それをこんな感じにリダイレクトします。

https://example.com/2020-03-01/

ただそれだけです…もう一度謝った方がいいですかね?(居直り)

リダイレクトの前提条件

転送元がカレンダーの日付しか持っていないので転送先のパーマリンクも必然的に日付のみというのが当カスタマイズにおけるリダイレクトの前提条件です。もちろん投稿のパーマリンクは全てそのフォーマットに統一する必要があります。

リダイレクトプラグインを使用します

ぶっちゃけカスタマイズと言うほどの高度な内容ではありませんが、当エントリーで紹介するのは「カレンダーウィジェットの日付をクリックした時に一覧表示では無く直接その日付のエントリーを開く」というのを出来るだけ簡単に実現する方法になります。

リダイレクトという事でもしかするとこの方法ではSEO的に何か影響する可能性も懸念しましたが、今回のカスタマイズで私が最も重要視したのはしつこいようですが出来るだけ簡単にという点なので…もうphpとかイジるのは極力無しの方向でいきたいんですよね、割と切実に。

そもそもカレンダーウィジェットのリンク先になるアーカイブのディレクトリはインデックス対象では無いはずなので(ですよね?)大丈夫だと思っていますが、そんな事を気にするくらいなら少しでもユーザーフレンドリーなインターフェースを提供する事の方が私としては意味があると思うのでこの際気にしない事にしました。

WordPressプラグイン Redirection

正規表現を使ったリダイレクトさえ出来ればプラグインは自由に選んでいただいて結構ですが、とりあえず今回はこのRedirectionを使用しています。

単純にhonyararaからhogehogeへというようなシンプル極まりないリダイレクトならこちらのエントリーで紹介しているプラグインもオススメですが、ちょっと凝った事をやろうと思うとやはりRedirectionになるでしょうか。

何れにしても当エントリーはプラグインの紹介記事では無いのでRedirectionの使い方に関して詳細には説明していませんが、機会があればその時にでもあらためて書いてみたいと思います。

正規表現を使ったリダイレクト設定

日付の部分を 数字4桁 / 数字2桁 / 数字2桁 で分割しています。()で括ってあるのは転送先のパーマリンクでその部分を参照する為です。

^/(\d{4})/(\d{2})/(\d{2})/

この年月日をそれぞれハイフンで繋ぐとこうなります。

/$1-$2-$3/

実際の作業としては、ダッシュボード > ツール > Redirection と開いて、画面の下の方にある「新しい転送ルールを追加」から以下のように設定します。

  • ソースURL:転送元のパーマリンク(カレンダーウィジェットのリンクを正規表現で)
  • ターゲットURL:転送先のパーマリンク(ハイフン繋ぎに編集し直した正規表現の日付)
  • URL options / Regex:プルダウンメニューから正規表現にチェック

設定が済んだら転送ルールを追加をクリックします。

と、ここまで長々と書きましたが作業はこれだけです。あとはカレンダーウィジェットから任意の日付をクリックして、その日付のエントリーが開く事を確認出来たら当エントリーのカスタマイズは無事終了です、お疲れ様でした。

サブディレクトリの場合は要注意

このプラグイン(Redirection)で自動的に取得してくれるのはあくまでもルートのドメインなので、サブディレクトリにWordPressをインストールしている場合はその点を考慮しなければいけないようです。

私はやらかしました… orz

先ほどの例だと転送元と転送先をそれぞれ

/* 転送元 */
^/サブディレクトリ/(\d{4})/(\d{2})/(\d{2})/

/* 転送先 */
/サブディレクトリ/$1-$2-$3/

このようにしないとうまくリダイレクトされないので注意して下さいね?

カレンダーウィジェットの使い勝手が向上するかも

1日に何記事も投稿するようなサイトでは必要無いカスタマイズですが、ニュースや更新情報などを発信しているサイトではカレンダーウィジェットの日付をクリックする事で直接投稿を開けるのはアクセシビリティの向上に繋がるのではないかと思いますがいかがでしょう。

何れにしてもあまり応用が効かせられる内容ではありませんが、当エントリーのカスタマイズが少しでもお役に立てば幸いです。