web-dev-qa-db-ja.com

get_terms問題:関連記事


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
}

私たちを手伝ってくれますか?

1
Paul_p

get_the_term_list()は、分類の「タイプ」に含まれる、投稿に添付されている用語を検索しています。

get_terms()は、分類内のすべての用語を検索するように設計されています。

あなたがやろうとしているのは、分類法そのものではなく、分類法の特定の用語にget_terms()を使うことです。

あなたがする必要があります:$terms = get_terms('type');

1
Pippin

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>' );
}
1
Rachel Carden