WordPress(ワードプレス)3.01以降で日付別アーカイブをカテゴリ指定するプラグイン

先日の地震から今日で1週間が経ちました。皆様どのように毎日をお過ごしでしょうか。

被災地では多くの方が不自由な避難生活を強いられ、直接被害がなかった地域でも停電やそれにまつわる交通機関の乱れ、物資の不足が起こり始めているなど、大変な状況はまだまだ続きそうですね。

弊社は基本的には通常時に近い営業を続けています。先は見えませんが、幸いに普通の生活を送り、働くことができる環境にある私たちができることは、きちんと仕事をしてきちんと経済を回す役目を少しでも担うことではないかと思っています。あ、節電は忘れていませんよ。今も毛布にくるまってこれを書いています。

なので弊社ブログも基本的に通常営業。WordPressのTIPSなんて書いてみようと思います。

ワードプレスでアーカイブを表示する際、基本的にはカテゴリごとか時系列ごとに大別されます。パーマリンク設定をデフォルトにしてあれば、URL末尾にクエリとして


のような記述をすることで両方を一度に指定してアーカイブを開くことは可能なのですが、パーマリンクを変更している場合はそれらが無視された形のURLにリダイレクトされます。

また、アーカイブの一覧を表示したい場合はwp_get_archives()を使うことになるかと思いますが。この関数がパラメータとして指定できるアーカイブの種類は日付のみで、カテゴリを指定することができません。

要は、標準の仕様ではカテゴリと日付両方で絞り込んだアーカイブの使用はやや難しい、というところかと。

再度纏めるとデメリットは以下の通り。

  • カテゴリと日付両方で絞り込んだアーカイブを呼び出すには、パーマリンク設定がデフォルトでなければならない。
  • アーカイブ一覧を呼び出すwp_get_archives()という関数にカテゴリ指定ができない。

さて、WPの豊富なプラグインにはそれらを一気に解決するものが存在し、既に広く使われているので皆さんよく知るところだと思います。それが以下のリンク。

Archives for a category WordPress plugin

一応使い方を書いておくと、アップロード、有効化して、wp_get_archives()においてカテゴリ指定をすれば、デフォルトだと効かないカテゴリ指定が有効となります。記述例としてはこんな感じですね。

<ul>
<?php wp_get_archives('cat=3'); ?>
</ul>

このプラグインの秀逸なところは、先述のパーマリンクのことまでカバーしている点。有効化したら管理画面からDisable canonical URLsにチェックを入れると、パーマリンクを変更していてもカテゴリ指定が有効となります。すごく便利です。


さて、少し前にWordPressが3系にアップデートされましたが、それ以降このプラグインが動かなくなったように思います。設置してもうまく動かない。原因がどこにあるか、僕では今ひとつわからないのですが、いつもどおり設置しても動かない。

で、ググってみたら、同機能を有するプラグインを提供してくれている方がおられました。作者さんありがとうございます。

こちらのプラグインは現バージョンのWPにでも問題なく動いているようです。というより作者さん曰く、

あとPHP5でWordPressは新しめのバージョンじゃないと動かないと思います。

とのこと。

紹介ページは以下の通りです。

WordPress 日付別アーカイブ一覧をカテゴリー指定可能にするプラグイン – 130単位
WordPress 日付別アーカイブ一覧をカテゴリー指定可能にするプラグイン 修正編 – 130単位

ダウンロードは修正版のページの一番下にzipのテキストリンクがありますのでそちらから。使い方はほぼ同じです。

利用上注意しなければと思ったのは、日付アーカイブを表示する際のテンプレートにもcategory.phpが優先して使われることです。

日付アーカイブとしてarchive.phpなど別のテンプレートを用いる場合は、コアな部分でarchive.phpが優先されるように指定を変えるか、is_date()の値はtrueを示すのでそれを利用してテンプレ内で分岐処理を行うか、などの対応が必要です。

以上、お役に立てば幸いです。