前回の記事では、子タームを持つかどうかで処理を分岐し、子タームがある場合にはすべてのターム情報を一覧で表示し、
子を持たない場合には投稿の一覧を表示していました。
そして、今回は「すべての子ターム情報」というところがネックになりました。
すべて、ではなく直近の子のターム情報だけの一覧を表示したかったのです。
前回、ターム情報の取得に使っていた関数は「get_term_children」でしたが、
これは全てのターム情報を取得します。
これでは具合が悪いので、今回は「get_terms」に書き換えました。
<?php $term_id = $taxonomy->term_id; $children = get_term_children( $term_id, $taxonomy_name ); if ( $children ): //子カテゴリーを持つ場合 ?> <?php $taxonomy_name = 'safety-cat'; $terms = get_terms( $taxonomy_name, array( 'parent' => $term_id, 'hide_empty' => false, 'orderby' => 'term_order', )); foreach ( $terms as $term ) : ?> <tr><td><a href="<?php echo get_term_link( $term ); ?>"><?php echo $term->name; ?></a><td></th> <?php endforeach; ?>
parentにタームIDをセットしてやることで、直近の子ターム情報を引っ張ってくれます。
これで目的が果たせました。