【WordPress】wp_list_categoriesを使わずに、タームの親子関係を保ったまま自由に階層表示させる方法
Switch Staff
- CODING
おはようございます。スイッチの三宅です
ポケモンGOに、個体値を評価してくれる機能がつきましたね
さっそく愛しのレアコイルを見てもらったんですが、
「君のレアコイルは全体的にイマイチだな!」と罵られたので咽び泣いています。
それはともかく、題名にもあるように
「wp_list_categoriesを使わずに、タームの親子関係を保ったまま自由に階層表示させる方法」
に悩んでいたのが解決したので、メモ程度に書き込んでおきます。
さっそくコードを書くのでどうぞコピペしてください。コードが散らかってるのは許してください。
<dl>
<?php
$taxonomy = 'job'; //タクソノミー名
$args = array(
'pad_counts' => true,
'hide_empty' => true,
'parent' => 0
);
$terms = get_terms( $taxonomy , $args );
foreach ( $terms as $term ) : //親タームのみ回す
?>
<dt><a href="<?php echo home_url( '/' ); ?>side/?staxonomy=job&sterm=<?php echo $term->slug; ?>"><?php echo $term->name; ?></a></dt>
<?php
$term_id = $term->term_id;
$termchildren = get_term_children( $term_id, $taxonomy );
foreach ( $termchildren as $child ): //その中で子タームを回す
$termC = get_term_by( 'id' , $child, $taxonomy );
if( $termC->count != 0 ):?>
<dd><a href="<?php echo home_url( '/' ); ?>side/?staxonomy=job&sterm=<?php echo $termC->slug; ?>"><?php echo $termC->name; ?></a></dd>
<?php
endif;
endforeach;
endforeach;
?>
</dl>
何をしているかというと、まず親タームだけをforeachで回して、
その中で二重ループで、親に属する子タームを出しているだけです。
子タームは親タームのidをもとに呼び出されます。
ただしこれだと使ってないタームも全部出てきますので、
if( $termC->count != 0 ):
のところで記事数0のやつはださないようにしています。
終わってみるとこんなもんですが、調べてもなかなか出てこなかったので手こずりました。。
これならHTMLもかなり自由にカスタマイズできますね。
お役に立てれば光栄です。それでは、また。