カスタム投稿タイプの日付(年別、月別、日別)アーカイブを表示させたかったのですが、日付アーカイブのURLが分からず苦労したので、備忘録に残しておこうと思います。
アーカイブ(一覧)ページの設定の確認
アーカイブページを表示するには、アーカイブページを作成する設定をしておく必要があります。
文字にすると当たり前のことですが、初めてカスタム投稿タイプを作成したときはこの設定を忘れて数時間無駄にしていました、、
プラグインあり(CPTUI)
プラグインの「Custom Post Type UI」を使用している場合は、アーカイブあり(英語ではHas Archive)という設定をTrueにしましょう。デフォルトではFalseになっているので注意が必要です。
プラグイン無し
プラグインを使わずfunctions.phpでカスタム投稿タイプを作成している場合は’has_archive’ => trueになっていることを確認してください。
こちらは技術者の方向けになりますのでfunctions.phpを修正する場合は必ずバックアップを取ったうえで、修正作業を行ってください。
管理画面の外観→テーマファイルエディタを選択してfunctions.phpを選択してください。
ページ内検索(Ctrl + F)をしてregister_post_typeを検索してください。
そこに下記のようなコードがあり、’has_archive’ => trueがあることを確認してください。
register_post_type(
'custom',
array(
'label' => 'カスタム',
'public' => true,
'has_archive' => true, // これがあればOK
'show_in_rest' => true,
'menu_position' => 5,
'supports' => array(
'title',
'editor',
'thumbnail',
'revisions',
),
)
なければ、他のコードはいじらず‘has_archive’ => trueを追加して、「ファイルを更新」ボタンを押してください。
,(カンマ)も必要ですので他のパラメータに合わせて追加してください
リンクの出力(wp_get_archives)
wp_get_archivesを使用します。
<?php
wp_get_archives( array(
'type' => 'daily', // 出力したい日付アーカイブの種類を設定
'post_type' => 'news' // カスタム投稿タイプのスラッグを設定
)); ?>
post_typeに、日付アーカイブを出力したいカスタム投稿タイプのスラッグを設定してください。
typeの部分に出力したい日付アーカイブの種類を設定してください。
- daily:日別
- weekly:週別
- monthly:月別
- yearly:年別
そして出力されたリンクを確認してください。
以上です。参考になれば幸いです!