【WordPress】カスタムタクソノミーの出力あれこれ

まず名前がごちゃごちゃになるので整理。
タクソノミーに各タームが収納されています。カテゴリーやタグもタクソノミーの一種。

タクソノミー
 ∟ターム
 :
 ∟ターム

ループ外

第一階層のタームだけ出力する

たとえば、「school_cat」という階層があるカスタムタクソノミーの第一階層タームだけ表示したい場合。

学校カテゴリー(school_cat)
 ∟親ターム ←ここだけ
  ∟子ターム
  ∟子ターム
   ∟孫ターム
   ∟孫ターム
 ∟親ターム ←ここだけ
 :
 ∟親ターム ←ここだけ

<?php
$terms = get_terms('school_cat');
foreach ($terms as $term) {
    $parent = $term->parent;
    if ($parent == 0) {
?>
        <h3><?php echo esc_html($term->name); ?></h3>

<?php }
} ?>

第一階層のタームの下に子孫タームを出力

親タームごとに区切ってターム一覧を出力したりする場合

<?php
$terms = get_terms('school_cat');
foreach ($terms as $term) {
    $parent = $term->parent;
    if ($parent == 0) {
?>
        <h3><?php echo esc_html($term->name); ?></h3>

        <div class="subcat">
            <?php
            $parentId = $term->term_id;
            $childargs = array(
                'parent' => $parentId,
                'hide_empty' => true
            );
            $childterms = get_terms($tax_slug, $childargs);
            ?>
            <?php
            foreach ($childterms as $childterm) {
                $link = get_term_link($term->slug, 'school_cat');
            ?>
                <a href="<?php echo $link; ?>"><?php echo $childterm->name; ?></a>
            <?php
            }
            ?>
        </div>

<?php }
} ?>
get_term_link()指定されたタームのアーカイブページへのパーマリンクを返す

親タームのidから子孫タームを出力しています。

get_terms 返り値

term_idID
name名前
slugスラッグ
term_groupグループID
term_taxonomy_idタクソノミーID
taxonomyタクソノミー名
description説明
parent親タクソノミーのID。親タクソノミーがない場合は0。
count投稿数

参考