WordPress カスタム投稿タイプ 年別アーカイブページの作成方法
WordPressのカスタム投稿タイプで年別のアーカイブページを作成する方法です。
企業のニュース情報やお知らせページなどは、情報が多いとあっという間に一覧からいなくなってしまいますね。年別のアーカイブページを用意しておけば情報を探しやすいですし、その年に何があったかも明確にわかります。
ここでは WordPressのカスタム投稿タイプで年別のアーカイブページを作成する方法 を紹介します。
年別アーカイブリストの表示方法
ここからはカスタム投稿のスラッグが news としている場合のサンプルとなります。
まずはカスタム投稿タイプの編集画面で、アーカイブあり=真(True)であることを確認します。
年別アーカイブリストの表示には wp_get_archives()
もしくは WP_Query
を使ってリスト作成する方法があります。
wp_get_archivesを使う
wp_get_archivesを使うのは一般的ですね。
下記のコードを貼り付けます。
:
<ul class="yearly-list">
<?php wp_get_archives( 'post_type=news&type=yearly&show_post_count=1' ); ?>
</ul>
するとこんな感じで表示されます。
type=yearlyをtype=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();
}
?>
すると、こんな感じで表示されます。
このコード、件数が膨大だと表示が遅いかもしれないなー。まあ、Distinctするのは一般的じゃないからいいのかなっと。
まとめ
WordPressのカスタム投稿タイプで年別のアーカイブページを作成する方法を紹介しました。
年別/月別のアーカイブページはお客様からの需要が結構高いんですよね。それほど難しい作業ではないのでサクッと作れましたよ。
おつかれさまでした。