WordPress カスタム投稿タイプの月別アーカイブ一覧を表示する方法

WordPress でカスタム投稿タイプの月別アーカイブ一覧を表示する方法を紹介します。
月別アーカイブ一覧を表示するには wp_get_archives 関数を使用します。
この関数は、年別、月別、週別、日付別、投稿タイトルの公開日順、投稿タイトルのアルファベット順でアーカイブリストを表示することができます。

この関数はテンプレートのどこでも使用することができますが、カスタム投稿タイプで使用する場合はプラグイン Custom Post Type Permalinks をインストールして有効化する必要があります。

  1. 月別アーカイブ一覧の実装方法
  2. 月別アーカイブ一覧の基本的な表示
  3. 月別アーカイブ一覧をプルダウンメニューで表示
  4. アーカイブ一覧でタイトルに年度を表示したい
  5. 表示されるテンプレートが不明な場合

月別アーカイブ一覧の実装方法

実装するための手順は次の通りです。

1)WordPress のプラグイン Custom Post Type Permalinks をインストール
2)wp_get_archives()post_type を追加
3)アーカイブ用のテンプレート archive-{post-type}.php を用意
4)カスタム投稿を作る際に has_archivetrue に設定

プラグインが有効化されている場合は、設定のパーマリンク設定ページに「has_archive が true の場合、カスタム投稿タイプのアーカイブのパーマリンクを追加します。」の一文が表示されます。

月別アーカイブ一覧の基本的な表示

次のコードは、カスタム投稿タイプ information の最近12ヶ月の月別アーカイブ一覧の表示方法です。

<ul><?php wp_get_archives('type=monthly&post_type=information&show_post_count=1&limit=12'); ?>
</ul>

その月の投稿が何件あるかを表示したい場合は show_post_count を追加します。
最近の12ヵ月の月別アーカイブ一覧を表示する場合は limit を追加します。

月別アーカイブ一覧をプルダウンメニューで表示

プルダウンメニュー(ドロップダウンリスト)で表示する場合は select を使います。
次のコードは、カスタム投稿タイプ information の最近12ヶ月の月別アーカイブ一覧の表示方法です。

<select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'>
<option value=""><?php echo attribute_escape(__('Select Month')); ?></option>
<?php wp_get_archives( 'type=monthly&post_type=information&format=option&show_post_count=1&limit=12' ); ?>
</select>

wp_get_archives には formatoption を追加することで対応します。

アーカイブ一覧でタイトルに年度を表示したい

アーカイブ一覧でタイトルに年度を表示したい場合は wp_title を使用します。

<?php wp_title(''); ?>

ただしこの方法、アーカイブページは「タイトル」を表示、年別アーカイブの場合は「年」を表示します。
そのため、タイトルを年を分けて表示したい時などは is_year を条件分岐に使って、別々に情報を取得します。

<?php // 年別アーカイブで年度タイトルを表示
if(is_year()){ // 年別アーカイブの場合は最新の投稿の年を取得
foreach((get_post()) as $date) { // 最新記事の年月日を取得
$postsYear = date('Y',get_post_time()); // 最新の投稿の年を取得
break; // ループを終了
}
} else { // 年別アーカイブではなければ
$postsYear = date('Y'); // 現在の年を取得
}
?>
年別アーカイブなら下記を表示
<?php if(is_year()){ echo 'この一覧は'.$postsYear.'年度のアーカイブ'; } ?>

表示されるテンプレートが不明な場合

出力されるリンク先が意図しない場合はWordPress カスタム投稿タイプで日付別アーカイブページが表示されない時の対処方法を合わせてご確認ください。

まとめ

WordPress でカスタム投稿タイプの月別アーカイブ一覧を表示する方法を紹介しました。
アーカイブ一覧の表示がうまく行かない場合は、パーマリンク設定の「変更の保存」をクリックして情報を更新しましょう。