カスタム投稿タイプの年月別アーカイブをdate.phpで表示する

- WordPress -
2020.01.09
WordPress

カスタム投稿タイプの年月別アーカイブを、「archive-{投稿タイプ名}.php」ではなく「date.php」で表示する方法について。

困ったこと:
デフォルトの「投稿」はdate.phpを用意するだけで簡単に年月別アーカイブ専用のページを用意できるんですが、カスタム投稿タイプもdate.phpに表示するのは簡単だろうと思っていたらとてつもなく苦戦。

解決策:
最初はfunctions.phpでカスタマイズする方法を探っていましたが、結果「Custom Post Type Date Archives」というプラグインを使うと「今までの苦労はなんだったの」ってレベルで簡単に実現できた。

※ functions.phpでカスタマイズする方法は結局分からずじまいです。もしプラグインを使わずに実装する方法を探しにきていたら申し訳ない...。

カスタム投稿の年月別アーカイブをdate.phpで表示

「date.php」をテーマフォルダ内に作成していない場合、最初に作成しておきましょう。

そして管理画面プラグイン新規追加で「Custom Post Type Date Archives」で検索し、インストール・有効化をします。

あとは、以下3ステップを踏むだけ。

  1. 管理画面左バーにあるカスタム投稿タイプのサブメニューに「Date Archives」が増えているのでクリック(この例では「商品」)
  2. 「Add date archives」にチェック
  3. 保存を忘れずに

カスタム投稿タイプの年月別アーカイブ表示

これで終わりです。

上記画像の場合「商品(product)」というカスタム投稿タイプを作ったので、

https://xxxx.com/product/date/2019

https://xxxx.com/product/date/2019/08

のようにアクセスすると「date.php」が年月別テンプレートとして適用され表示されます。

あとは、アーカイブリンクを表示させたいところに、WordPressのお作法通り wp_get_archives関数を置いて、表示されたリンクをクリックしてしっかりと「date.php」へ遷移することを確認すればOKです!

<h2>年別アーカイブ</h2>
    <?php
    $args = array(
        'type' => 'yearly',
        'show_post_count' => true,
        'post_type' => 'product',
    );
    wp_get_archives($args);
?>

参考teratail:wordpress カスタム投稿での年別アーカイブ