カスタムタクソノミーのタームを階層で一覧表示する

ターム名を見出しにして3階層表示する例です。

<?php //階層1(最上位の階層)
$terms_lv1_faq = get_terms( 'タクソノミー名', array('orderby' => 'name','order' => 'ASC', 'hide_empty' => false, 'parent' => 0 ) );
if ( !empty( $terms_lv1_faq ) ) :
foreach($terms_lv1_faq as $lv1_item):
$lv1_id = $lv1_item->term_id; ?>
<h2><?php echo $lv1_item->name; ?></h2>

<?php //階層2
$terms_lv2_faq = get_terms( 'タクソノミー名', array('orderby' => 'name','order' => 'ASC', 'hide_empty' => false, 'parent' => $lv1_id) );
if ( !empty( $terms_lv2_faq ) ) :
foreach($terms_lv2_faq as $lv2_item):
$lv2_id = $lv2_item->term_id; ?>
<h3><?php echo $lv2_item->name; ?></h3>

<?php //階層3
$terms_lv3_faq = get_terms( 'タクソノミー名', array('orderby' => 'name','order' => 'ASC', 'hide_empty' => false, 'parent' => $lv2_id) );
if ( !empty( $terms_lv3_faq ) ) :
foreach($terms_lv3_faq as $lv3_item): ?>
<h4><?php echo $lv3_item->name; ?></h4>

<?php endforeach; endif; //階層3 ?>
<?php endforeach; endif; //階層2 ?>
<?php endforeach; endif; //階層1 ?>

上記ソースコードの3階層目に投稿一覧を表示する例です。

<?php //階層1(最上位の階層)
$terms_lv1_faq = get_terms( 'タクソノミー名', array('orderby' => 'name','order' => 'ASC', 'hide_empty' => false, 'parent' => 0 ) );
if ( !empty( $terms_lv1_faq ) ) :
foreach($terms_lv1_faq as $lv1_item):
$lv1_id = $lv1_item->term_id; ?>
<h2><?php echo $lv1_item->name; ?></h2>

<?php //階層2
$terms_lv2_faq = get_terms( 'タクソノミー名', array('orderby' => 'name','order' => 'ASC', 'hide_empty' => false, 'parent' => $lv1_id) );
if ( !empty( $terms_lv2_faq ) ) :
foreach($terms_lv2_faq as $lv2_item):
$lv2_id = $lv2_item->term_id; ?>
<h3><?php echo $lv2_item->name; ?></h3>

<?php //階層3
$terms_lv3_faq = get_terms( 'タクソノミー名', array('orderby' => 'name','order' => 'ASC', 'hide_empty' => false, 'parent' => $lv2_id) );
if ( !empty( $terms_lv3_faq ) ) :
foreach($terms_lv3_faq as $lv3_item): ?>
<h4><?php echo $lv3_item->name; ?></h4>

<?php
$faq_args = array (
'posts_per_page' => -1, //表示件数
'post_type' => 'faq',
'tax_query' => array(
array(
'taxonomy' => 'タクソノミー名',
'field' => 'slug',
'terms' => array($lv3_item->slug),
),
),
);
$faq_query = new WP_Query( $faq_args );
if( $faq_query->have_posts() ): ?>
<?php while( $faq_query ->have_posts()) : $faq_query ->the_post(); ?>
<?php get_template_part('loop','faq'); ?>
<?php endwhile; ?>
<?php else: ?>
<p>表示するでーたはありません。</p>
<?php endif; ?>

<?php endforeach; endif; //階層3 ?>
<?php endforeach; endif; //階層2 ?>
<?php endforeach; endif; //階層1 ?>

参考サイト

ネットショップ向けWooCommerce対応WordPressテーマ「Japacart(ジャパカート)」

本サイトの内容に誤りや不正確な記述がある場合やサンプルに基づくいかなる結果も一切の責任を負いかねますので、あらかじめご了承ください。

ネットショップ向けWooCommerce対応WordPressテーマ「Japacart(ジャパカート)」
Copyright © WPスイッチ All Rights Reserved.