WordPressのカスタム投稿タイプで、月別・年別といったアーカイブページを実装する方法をご紹介します。
月別・年別アーカイブページへのリンク一覧の表示
今回は年別アーカイブの場合を考えます。
PHP
<ul> <?php $args = array( // アーカイブリストの種類を指定 'type' => 'yearly', // 月別であればmonthlyを指定。 // カスタム投稿タイプのスラッグを指定 'post_type' => 'news', ); // アーカイブリストを表示 $yearly_list = wp_get_archives($args); ?> </ul>
wp_get_archives()関数
wp_get_archives()
は月別・年別のアーカイブページへのリンク一覧を表示する関数です。
詳細はこちらのページをご覧ください。
月別・年別アーカイブページの表示
カスタム投稿のアーカイブページのファイルに、下記を記述します。
PHP
<?php $args = array( 'post_status' => 'publish', 'post_type' => 'news', ); // 年情報を取得する。 $year = get_the_date( 'Y' ); // 月を取得する場合は「m」を引数に。 // 年別アーカイブページのとき、クエリに年情報を追加。 if (is_year()): $args = array_merge( $args, array( 'date_query' => array( array( 'year' => $year, ), ), ) ); endif; $query = new WP_Query($args); ?>
解説
年情報が取得できる場合に限り、その情報をクエリに追加し、年別のアーカイブ一覧を表示させます。
array_merge()
関数を使うと、配列に配列を追加することができます。