【WordPress】wp_list_categoriesを使わずに、タームの親子関係を保ったまま自由に階層表示させる方法
- Switch Staff
- Staff
おはようございます。スイッチの三宅です
ポケモンGOに、個体値を評価してくれる機能がつきましたね
さっそく愛しのレアコイルを見てもらったんですが、
「君のレアコイルは全体的にイマイチだな!」と罵られたので咽び泣いています。
それはともかく、題名にもあるように
「wp_list_categoriesを使わずに、タームの親子関係を保ったまま自由に階層表示させる方法」
に悩んでいたのが解決したので、メモ程度に書き込んでおきます。
さっそくコードを書くのでどうぞコピペしてください。コードが散らかってるのは許してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<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をもとに呼び出されます。
ただしこれだと使ってないタームも全部出てきますので、
1 |
if( $termC->count != 0 ): |
のところで記事数0のやつはださないようにしています。
終わってみるとこんなもんですが、調べてもなかなか出てこなかったので手こずりました。。
これならHTMLもかなり自由にカスタマイズできますね。
お役に立てれば光栄です。それでは、また。