私はグーグルを検索してきましたが、私は本当に混乱しています。投稿に割り当てられた分類法の用語を表示しようとしています。私はthe_terms($post->ID, 'locations');
を使っています。カスタム分類法は階層的です。
例:投稿に割り当てられた3つの用語:USA(parent) > FL(direct child of "USA") > Miami(direct child of "FL")
。得られるもの:FL, Miami, USA
これは、用語がアルファベット順に表示されていることを意味します。それらをMiami, FL, USA
のように表示したいです。これは達成できますか?私はまた、用語からアンカーを取り除きたいのですが、strip_tags(the_terms($post->ID, 'locations'))
はうまくいきません。
グーグルで検索している間、何人かの人がget_terms()
他のget_the_terms
そして他の人がthe_terms
を使っています。これらの機能の違いは何ですか?私は正しいものを使っていますか?
あなたの最初の質問に答えるために
これらの機能の違いは何ですか
get_terms()
は特定の分類法に属する用語オブジェクトの配列を返します
get_the_terms()
は投稿に属する用語の配列を返します
the_terms()
は投稿に属する用語名のHTMLフォーマット文字列を表示します
あなたはあなたの用語がハイパーリンクされていないし、親に従って順序付けられている必要があるので、ここでは wp_get_object_terms()
がより良い選択肢になると思います。 wp_get_object_terms()
は投稿に属する一連の用語も返しますが、より柔軟です。投稿ごとに追加のdb呼び出しを行うときには、この柔軟性に対してお金を払う必要があります。
これらすべてを念頭に置いて、次のことを試すことができます。(すべてのコードはテストされていません)
$args = [
'orderby' => 'parent',
'order' => 'DESC'
];
$terms = wp_get_object_terms( $post->ID, 'locations', $args );
$names = wp_list_pluck( $terms, 'name' );
$output = implode( ', ', $names );
echo $output;