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

- WordPress -
2023.03.18
WordPress/ワードプレス

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

困ったこと

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

解決策

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

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

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

1. テーマフォルダ内にdate.phpを作成

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

年月アーカイブをdata.phpで表示

もちろん、data.phpに記事表示ループの記述も忘れずに。

2. Custom Post Type Date Archivesをインストール

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

年月アーカイブをdata.phpで表示

3. プラグインの設定

プラグインを有効化した後、以下3ステップでCustom Post Type Date Archivesの設定をします。

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

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

これで設定は終わり。

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

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

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

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

4. date.phpで表示されるか確認【完了】

あとは、年月別アーカイブリンクを表示させたいところに、WordPressのお作法通り wp_get_archives関数 ≫を置いて、

index.phpなど<h2>年別アーカイブ</h2>
    <?php
    $args = array(
        'type' => 'yearly', // 年別アーカイブ。'monthly'なら月別
        'show_post_count' => true, // 記事件数を表示する
        'post_type' => 'product', // 投稿タイプ名
    );
    wp_get_archives($args);
?>

↓これが表示される時こういうHTMLになる

年月アーカイブをdata.phpで表示

表示された年/月別アーカイブリンクをクリックして「date.php」のテンプレートが適用・表示されていることを確認すればOKです。

年月アーカイブをdata.phpで表示

ちなみに本題からそれますが、上記赤枠のように現在適用されているテンプレート名がWordPress管理バーに表示される「Show Current Template ≫」というプラグインは便利なのでおすすめ。

表示中のテンプレート内で読み込んでいる関連ファイルまで表示してくれます。

年月アーカイブをdata.phpで表示

WordPressサイトを開発中に「今なんのテンプレートが適用されて表示されてるんだ?」と分からなくなったことがある方はぜひ導入してみてください。

↑TOP