タームリストに、属している・表示しているタームの投稿を表示

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