情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・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);} ?>