WordPressで月別アーカイブリストを表示する方法【カスタマイズ自由】

月別アーカイブリストを表示する方法を知りたい。
wp_get_archivesを使わず、html部分を自由にカスタマイズ可能な形式で表示したい。
本記事ではこのような悩みを解決。
実装方法について解説します。
wp_Queryを使って月別アーカイブリストを表示
<?php
$year_month = Null;
$year = Null;
$month = Null;
$args = array(
'post_type' => 'post', //投稿タイプを指定
'orderby' => 'date', // 日付順で表示
'order' => 'DESC',
'posts_per_page' => -1 // すべての投稿を表示
);
$the_query = new WP_Query($args);
?>
<ul>
<?php if ($the_query->have_posts()) : ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<?php if ($year_month != get_the_date('Y.m')) : // 同じ年月でなければ表示
$year_month = get_the_date('Y.m');
$year = get_the_date('Y'); // 年の取得
$month = get_the_date('m'); // 月の取得
?>
<!-- 月別アーカイブリスト -->
<li><a href="<?= home_url(); ?>/<?php echo $year; ?>/<?php echo $month; ?>/"><?php echo $year; ?>年<?php echo $month; ?>月</a></li>
<?php endif; ?>
<?php endwhile; ?>
<?php else : ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
wp_get_archivesを使わず、月別アーカイブリストを表示するサンプルコードです。
wp_Queryを使う事でhtml部分を細かくカスタマイズ可能な月別アーカイブリストを表示できます。
コードの詳細は以下の通りです。
wp_Queryを使って、記事データを取得。
wp_Queryループ内で$year = get_the_date(‘Y’);、$month = get_the_date(‘m’);、$year_month = get_the_date(‘Y.m’);を変数定義し、記事の年月データを取得。
if ($year_month!= get_the_date(‘Y.m’){}を条件式とし、同じ年月以外は月別アーカイブリストを追加する処理を加えればOKです。
実装環境に合わせ、月別アーカイブページへのリンク・年月をhtmlを使ってカスタマイズ表示します。
$year変数を使えば年、$month変数で月を表示できます。
以上で実装完了です。
まとめ
月別ではなく、年別でアーカイブリストを表示したい方は以下記事をご参考ください。
以上で解説を終わります。