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

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

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

実装方法

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

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 を追加することで対応します。

まとめ

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

スポンサーリンク

合わせて読みたい関連記事