get_termsの代わりに、WP_Term_Queryで、タクソノミ の2階層目のタームを取得する。(WP 4.6以上で使用可能)
投稿: 更新:2017/11/07
WP_Term_Queryを使って、セレクトボックスの選択肢に2階層目のタームのみ全表示
ということで、色々省いて本題に。
セレクトボックスの選択肢に、2階層目のタームのみ全表示させたかったので、get_termsで試行錯誤中に検索で・・・
WP_Term_Query を発見。もしかして WP_Query (query_postから主役を奪った)のタクソノミ版?
よし、試してみよう。
ということで、WP_Term_Query で試してみました。
別に、get_terms でも良かったんじゃないかというのは、置いといて。。
2階層目の全タームの情報を取得
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$tax ='taxonomy';//タクソノミ名 $args = array( 'taxonomy' => $tax, 'hide_empty' => false, 'parent' => 0,//トップレベルのターム ); $toplv_term_query = new WP_Term_Query($args); foreach($toplv_term_query->get_terms() as $toplv_term){ $args = array( 'taxonomy' => $tax, 'hide_empty' => false, 'parent' => $toplv_term->term_id,//親がトップレベル ); $secondlv_term_query = new WP_Term_Query($args); foreach($secondlv_term_query->get_terms() as $secondlv_term){ $term_id = $secondlv_term->term_id;//2階層目のタームの情報を取得 } } |
指定方法は、get_tarms とあまり変わりないと思います。
本来は、「2階層目のタームのみを抽出する」というだけの投稿のような気がしますが、ついWP_Term_Queryが気になった & もっと良い方法がある気がするので。。
うーん・・