カテゴリーごとの月別アーカイブを実装する方法

WordPressではデフォルトのウィジェットで月別アーカイブを設置できますが、すべてのカテゴリーで共通した月別アーカイブになってしまいます。
サイドバーなどでカテゴリーごとに月別アーカイブを実装するには、プラグインを使用すると簡単です。

いくつかのプラグインがあるようですが、今回は「Archives for a category」というプラグインを試させていただきました。

制作者様のページはこちら:WordPress plugin Archives for a category | kwebble.com

このプラグインはもはや維持されておらず、現在のバージョンのWordPressでテストされていないので、もう使用しないことをお勧めします。このページはアーカイブとして保管されています。

とあるのですが、現在のバージョン4.8.2でも正常な動作が確認できました。

プラグイン「Archives for a category」の使用方法

使用方法は以下の通り。

管理画面での指定

インストール後、管理画面の設定から「kwebble」へ移動し、「Disable canonical URLs.」にチェックを入れて設定をアップデートします。

テンプレートファイル側の指定

テンプレートファイルでは、以下のようにカテゴリーIDを渡すことで該当するカテゴリーの月別アーカイブを表示できます。

例1)カテゴリーIDが1の月別アーカイブを表示

<?php wp_get_archives('cat=1'); ?>

例2)カテゴリーのアーカイブページで同じカテゴリーの月別アーカイブを表示

<?php
	$category_name = single_cat_title( '', false );//現在のカテゴリー名を取得
	$category_id = get_cat_ID( $category_name );//カテゴリー名からカテゴリーIDを取得
	wp_get_archives('cat='.$category_id);//取得したIDのカテゴリーの月別アーカイブリストを出力
?>

例3)投稿ページで投稿の属するカテゴリーの月別アーカイブを表示

<?php
	$cats = get_the_category();//投稿につけられたすべてのカテゴリー情報を取得
	$cat = $cats[0];//最初のカテゴリー情報を$catに入れる
	category_id = $cat->cat_ID;//カテゴリー情報の中からカテゴリーIDを取得
	wp_get_archives('cat='.$category_id);//取得したIDのカテゴリーの月別アーカイブリストを出力
?>

上記の例以外では、特定のカテゴリーの除外や、カテゴリーの複数指定なども可能です。

デフォルトの出力は、リンクの前後に<li>,</li>がついたリスト形式になります。
リストを囲うulタグやその他のカスタマイズは、パラメータの指定によって行えます。
詳細は、wp_get_archivesのCodexを参照してください。

なお、残念ながら週別アーカイブでは機能しないとのこと。
いずれ他のプラグインも試してみたい!