情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・PHPのバージョン等によって動作しない場合もあります。
taxonomy.php にリストを自動で出すための記述
<ul><?php $term_xxx = get_query_var('xxx_cat'); $term_year = get_query_var('year'); query_posts( array('post_type'=>'xxx','taxonomy'=>'xxx_cat','term'=>$term_xxx,'nopaging'=>1) ); $prev_year = null; if ( have_posts() ) { while ( have_posts() ) { the_post(); $this_year = get_the_date('Y'); if ($prev_year != $this_year) { if (!is_null($prev_year)) { } echo '<li'; if ($term_year == $this_year) {echo ' class="current"';} echo '><a href="' . $home . '/date/' . $this_year . '?xxx_cat=' . $term_xxx . '">' . $this_year . '</a></li>'; } $prev_year = $this_year; } } wp_reset_query(); ?></ul>
タームのトップにアクセス時は今年度の一覧を表示するfunctions の記述。年別アーカイブはパラメーター付きで表示するためパラメーターの有無で分岐
if ( ! is_admin() && $query->is_main_query() && (is_tax('xxx_cat')) ) { if (!isset($_GET['xxx_cat'])) { $thisyear = date('Y'); $query->set( 'year', $thisyear ); $query->set( 'posts_per_page', '-1' ); } }
今年度の投稿がない場合は前年度にリダイレクトするためheader の最初に記述
<?php $thisyear = date('Y'); $preyear = $thisyear - 1; $term_xxx = get_query_var('xxx_cat'); ?> <?php if (is_tax('xxx_cat') && !isset($_GET['xxx_cat']) && !have_posts()) { wp_redirect('/date/' . $preyear . '?xxx_cat=' . $term_xxx);} ?>