get_the_term_listを使用してページの現在の分類法の名前を取得し、それをget_termsとforeachメソッドで使用して、同じ分類法のすべての「要素」の結果を表示しようとしています。しかし、私は空の結果しか得られませんでした。 (例えば、これはページの関連記事を持っていることです)。
なぜうまくいかないのかご存知ですか? get_the_term_listのエコーは問題なく動作しますが、get_termsのパラメータでは、 "li"の結果は空白になります。
$my_tax = get_the_term_list( $post->ID, 'type');
//echo $my_tax;?> output works fine
$terms = get_terms($my_tax);
foreach ($terms as $term) {
echo "<li>".$term->name."</li>"; // empty
}
私たちを手伝ってくれますか?
get_the_term_list()
は、分類の「タイプ」に含まれる、投稿に添付されている用語を検索しています。
get_terms()
は、分類内のすべての用語を検索するように設計されています。
あなたがやろうとしているのは、分類法そのものではなく、分類法の特定の用語にget_terms()
を使うことです。
あなたがする必要があります:$terms = get_terms('type');
get_post_taxonomies( $post->ID )
を使用すると、投稿に添付されている分類法の名前を動的に取得できます。
そのため、現在の投稿の分類に属するすべての用語を取得できます。
$all_terms = get_terms( get_post_taxonomies( $post->ID ) );
または現在の投稿に割り当てられている用語だけ:
$object_terms = wp_get_object_terms( $post->ID, get_post_taxonomies( $post->ID ) );
さらに一歩進めて、各分類法に対してget_the_term_list()を実装します。
foreach( get_post_taxonomies( $post->ID ) as $taxonomy ) {
$taxonomy_name = get_taxonomy( $taxonomy )->labels->name;
echo get_the_term_list( $post->ID, $taxonomy, '<h3>' . $taxonomy_name . '</h3><ul><li>', '</li><li>', '</li></ul>' );
}