WordPress カスタム投稿タイプ 年別アーカイブページの作成方法

WordPressのカスタム投稿タイプで年別のアーカイブページを作成する方法です。

WordPress カスタム投稿タイプ 年別アーカイブページの作成方法

企業のニュース情報やお知らせページなどは、情報が多いとあっという間に一覧からいなくなってしまいますね。年別のアーカイブページを用意しておけば情報を探しやすいですし、その年に何があったかも明確にわかります。

ここでは WordPressのカスタム投稿タイプで年別のアーカイブページを作成する方法 を紹介します。


年別アーカイブリストの表示方法

ここからはカスタム投稿のスラッグが news としている場合のサンプルとなります。

まずはカスタム投稿タイプの編集画面で、アーカイブあり=真(True)であることを確認します。

カスタム投稿タイプの編集画面でアーカイブあり=真(True)であることを確認

年別アーカイブリストの表示には wp_get_archives() もしくは WP_Query を使ってリスト作成する方法があります。

archive-news.php というファイルを作っておきましょう。

wp_get_archivesを使う

wp_get_archivesを使うのは一般的ですね。

下記のコードを貼り付けます。

:
<ul class="yearly-list">
<?php wp_get_archives( 'post_type=news&type=yearly&show_post_count=1' ); ?>
</ul>

するとこんな感じで表示されます。

wp_get_archivesを使って年別表示

type=yearlytype=monthlyに変えれば月別に表示できますし、show_post_count=1を消せば、年の右側の投稿件数を消せます。

WP_Queryを使う

もう少しhtmlをカスタマイズして使いたいよってことであれば下記のコードを使ってください。


<?php
  $year=NULL;
  $args = array( 
    'post_type' => 'news', // 投稿タイプの指定
    'orderby' => 'date', // 日付順
    'posts_per_page' => -1 // すべての投稿を表示する
  );
  $the_query = new WP_Query($args);
  if ( $the_query->have_posts() ) {
    echo '<ul class="year-list">';
    while ($the_query->have_posts()): $the_query->the_post();
      // 同じ年の場合
      if ( $year != get_the_date('Y') ) {
        // 年を取得
        $year = get_the_date('Y');
        // 年別アーカイブリストの表示
        echo '<li><a href="'.home_url( '/', 'http' ).'news/'.$year.'">'.$year.'年</a></li>';
      }
    endwhile;
    echo '</ul>';
    wp_reset_postdata();
  }
?>

すると、こんな感じで表示されます。

WP_Queryを使って年別表示

このコード、件数が膨大だと表示が遅いかもしれないなー。まあ、Distinctするのは一般的じゃないからいいのかなっと。

まとめ

WordPressのカスタム投稿タイプで年別のアーカイブページを作成する方法を紹介しました。

年別/月別のアーカイブページはお客様からの需要が結構高いんですよね。それほど難しい作業ではないのでサクッと作れましたよ。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。