このエントリーをはてなブックマークに追加

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);} ?>

2012.11.20 投稿 2015.04.05 更新

新しい情報を追記している場合はありますが、古い情報の修正はしていません。投稿日・文中の日付を参照してください。

Recent Articles