情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・PHPのバージョン等によって動作しない場合もあります。
親タームを見出しとし子タームのリストを表示。シングルページの場合は属しているターム、タクソノミーページの場合は表示しているタームが子タームの場合にその投稿リストを表示。
*投稿は必ず子タームに属しているので、子タームを取得 <?php $cats = get_the_terms( 0, 'タクソノミー名' ); $current_cat = ''; foreach ( $cats as $cat ) { if ( ! $current_cat || cat_is_ancestor_of( $current_cat, $cat ) ) { $current_cat = $cat; } } $parent = get_term( $current_cat->parent,'タクソノミー名' ); ?> <h2><?php echo $parent->name; ?></h2> <?php $categories = get_categories('taxonomy=タクソノミー名&hide_empty=0&child_of=' .$current_cat->parent ); foreach($categories as $category) : ?> <ul> <li><a href="<?php echo get_category_link( $category ); ?>"><?php echo $category->cat_name; ?></a> <?php if ($category->slug == $current_cat->slug): ?> <?php $args = array( 'tax_query' => array( array( 'taxonomy'=>'タクソノミー名', 'terms'=>array( $category->cat_ID ), 'field'=>'id', 'operator'=>'IN' ), ) ); $query = new WP_Query( $args ); ?><?php if($query->have_posts()): ?> <ul> <?php while($query->have_posts()): $query->the_post(); ?> <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ul><?php endif; ?><?php wp_reset_query(); ?><?php endif; ?></li></ul> <?php endforeach; ?>
タクソノミーページの場合は表示しているのが親タームか子タームかで分岐 <?php $item_slug = get_query_var('タクソノミー名'); $item_term = get_term_by( 'slug', $item_slug, タクソノミー名 ); if ($item_term->parent) { $item = get_term( $item_term->parent,'タクソノミー名' ); } else { $item = get_term( $item_term,'タクソノミー名' ); } ?> <h2><?php echo $item->name; ?></h2> <?php if ($item_term->parent): ?> <?php $categories = get_categories('taxonomy=タクソノミー名&hide_empty=0&child_of=' .$item_term->parent); foreach($categories as $category) : ?> <ul> <li><a href="<?php echo get_category_link( $category ); ?>"><?php echo $category->cat_name; ?></a> <?php if ($category->slug == $item_slug): ?> <?php $args = array( 'tax_query' => array( array( 'taxonomy'=>'タクソノミー名', 'terms'=>array( $category->cat_ID ), 'field'=>'id', 'operator'=>'IN' ), ) ); $query = new WP_Query( $args ); ?><?php if($query->have_posts()): ?> <ul> <?php while($query->have_posts()): $query->the_post(); ?> <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ul><?php endif; ?><?php wp_reset_query(); ?><?php endif; ?></li></ul> <?php endforeach; ?> <?php else: ?> <ul> <?php wp_list_categories('taxonomy=タクソノミー名&title_li=&hide_empty=0&child_of=' . $item_term->term_id); ?> </ul> <?php endif; ?>