
###前提・実現したいこと
次のような「noun」「adjective」というタクソノミーがあり、それぞれに親として「ja」「en」というタームがあります。
noun(タクソノミー)
|─ ja(親ターム)
|─ en(親ターム)
adjective(タクソノミー)
|─ ja(親ターム)
|─ en(親ターム)
そしてこの親の中に、色々な子タームがあるのですが、その子タームを次の3つを組み合わせて取得したいです。
➀「noun」の、「en」の子ターム
➁「noun」の、「ja」の子ターム
➂「adjective」の、「ja」の子ターム
###試したこと
手間ですがいちいちすべてを書いたらできるかもと思い、下記のように3回にわけて取得してみたのですが、最後にarray_marge ができないようでした。
「// ここで連結できなかった」という部分です。
PHP
1//----------------------------------------------------- 2// 目的の子タームを➀➁➂に分けて取得 3//----------------------------------------------------- 4 5// ➀ 「noun」の、「en」の子ターム 6$en_term = get_term_by( 'slug', 'en', 'noun' ); 7$en_noun_id = $en_term->term_id; 8$noun_en = array( 9 'hide_empty' => true, // 空も出す 10 'child_of' => $en_noun_id, // この子を取得したい 11); 12$noun_en_array = get_terms( 'noun', $noun_en ); 13 14// ➁「noun」の、「ja」の子ターム 15$ja_term = get_term_by( 'slug', 'ja', 'noun' ); 16$ja_noun_id = $ja_term->term_id; 17$noun_ja = array( 18 'hide_empty' => true, // 空も出す 19 'child_of' => $ja_noun_id, // この子を取得したい 20); 21$noun_ja_array = get_terms( 'noun', $noun_ja ); 22 23// ➂「adjective」の、「ja」の子ターム 24$ja_adjective = get_term_by( 'slug', 'ja', 'adjective' ); 25$ja_adjective_id = $ja_adjective->term_id; 26$adjective_ja = array( 27 'hide_empty' => true, // 空も出す 28 'child_of' => $ja_adjective_id, // この子を取得したい 29); 30$adjective_ja_array = get_terms( 'adjective', $adjective_ja ); 31 32// ここで連結できなかった 33$merge_array = array_merge( $noun_en_array, $noun_ja_array, $adjective_ja_array );
なお、最終的には下記のようにして出力する予定です。
PHP
1//----------------------------------------------------- 2// 取得できた子タームを出力 3//----------------------------------------------------- 4 5// $merge_arrayに上の➀➁➂が実現できたと仮定し、IDとdescriptionだけにする 6$terms_array = []; 7foreach( $merge_array as $term ) : 8 $num = count( $terms_array ); 9 $terms_array[$num]['id'] = $term->term_id; 10 $terms_array[$num]['description'] = unserialize( $term->description ); 11endforeach; 12 13// 出力 14var_dump( $terms_array );
そこで、どうすれば上の3つの条件で取得できるかをお伺いしたいです。
あと、上のようにいちいち3回に分けて書かなくても済むような、例えば「get_terms」の第二引数で巧く指定する方法などございましたら教えて頂ければ幸いです。
どうぞ宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー