WordPressサイトでよく見る年月ごとのアーカイブの作成方法を紹介します。
以下のようなパーツですね。
ソース内容
以下、ソースの内容です。
<ul class="Sidebar_Navigation_List_Ul"> <?php //========== 今年のリンク - Start ========== ?> <?php // 今年 $cur_year = date('Y'); //現在年を取得 $query = new WP_Query('year='. $cur_year); //現在年に投稿された記事を取得 if($query->found_posts > 0) : //記事を存在すれば処理を行う ?> <li class="Sidebar_Navigation_List_Li"> <a href="/<?php echo $cur_year ?>"><?php echo $cur_year ?>年</a> //今年のリンクを生成 (<?php echo $query->found_posts ?>) //今年の記事の件数を表示 <ul class="Sidebar_Navigation_List_Child_Ul"> <?php //========== 今年の月別リンク - Start ========== ?> <?php for ($mon = 12; $mon >= 1; $mon--) : //1月~12月をループ $query = new WP_Query('year='. $cur_year . '&monthnum=' . $mon); //今年のX月の記事を取得 if(count($query->posts) > 0) : ?> <li class="Sidebar_Navigation_List_Child_Li"> <a href="/<?php echo $cur_year ?>/<?php echo $mon ?>"><?php echo $mon ?>月</a> (<?php echo $query->found_posts ?>) </li> <?php endif; endfor; ?> <?php //========== 今年の月別リンク - End ========== ?> <?php endif;?> </ul> </li> <?php //========== 今年のリンク - End ========== ?> <?php //========== 過去4年分のリンク - Start ========== ?> <?php // 過去4年分(年リンクのみ) $past_start_year = date('Y') - 1; for ($year = $past_start_year; $year > $past_start_year - 4; $year--) : $query = new WP_Query('year='. $year); if(count($query->posts) > 0) : ?> <li class="Sidebar_Navigation_List_Li"> <a href="/<?php echo $year ?>"><?php echo $year ?>年</a> (<?php echo $query->found_posts ?>) </li> <?php endif; endfor; ;?> </ul> </li> <?php //========== 過去4年分のリンク - End ========== ?> </ul>
処理概要
処理概要は以下です。
・今年の年月のリンクを生成。
・今年の月別リンクを生成。
・上記以外の過去5年分の年月リンクを生成。
作りたい年月アーカイブの仕様とは異なるかもしれませんが、個々の処理は流用できるかと思います。
処理詳細
処理の詳細は以下です。
・new WP_Query('year='. $cur_year);
この処理で、特定の条件の記事を取得しています。
条件は、'year='. $cur_yearの部分になります。
この例では、指定の年に投稿された記事を取得しています。
これ以外にも様々な条件指定が可能です。
例えば、後に出てくる
'year='. $cur_year . '&monthnum=' . $mon
と指定すれば、指定年の指定月の記事を取得できます。
・<a href="/<?php echo $cur_year ?>"><?php echo $cur_year ?>年</a>
リンクを生成しています。
siteroot/yyyyで、その年月のアーカイブページのリンクとなります。
・(<?php echo $query->found_posts ?>)
件数を表示しています。
$queryは、条件指定して取得した記事群になります。
found_postsプロパティで取得した記事の件数を表示できます。
(11) のような表示となります。
あとはこれを年月ごとに繰り返しているだけとなります。