カスタム分類法の「スピーカー」が付いたカスタム投稿タイプの「説教」があります。私はカスタムメタ値を話者分類法に割り当てたいと思ったので、私はRilwisの分類法メタクラスを使っています。
http://www.deluxeblogtips.com/p/taxonomy-meta-script-for-wordpress.html
このクラスを使用して、 'bio'というIDを持つメタボックスを追加しました。
彼の指示によると、 'bio'メタの値をテンプレートに出力するには、次のコードを使用する必要があります。
$meta = get_option('meta_id');
if (empty($meta)) $meta = array();
if (!is_array($meta)) $meta = (array) $meta;
$meta = isset($meta['term_id']) ? $meta['term_id'] : array();
$value = $meta['field_id'];
echo $value; // if you want to show
これが私にとってうまくいった結果です:
$taxmeta = get_option('speaker_meta');
if (empty($taxmeta)) $taxmeta = array();
if (!is_array($taxmeta)) $taxmeta = (array) $meta;
$taxmeta = isset($taxmeta['221']) ? $taxmeta['221'] : array();
$value = $taxmeta['bio'];
echo $value; // if you want to show
質問
上記のコードでは、 '221'という数字が見えます。これは、問題の投稿に割り当てられた分類法の実際のterm-idです(テストするためにハードコードされています)。私が理解できないのは、どのようにしてterm_idを動的に設定するかということです。
これはカスタム投稿タイプの単一ページで使用されているだけなので、URLを問い合わせることはできません。したがって、term-idは使用できません。
私が見ている「説教」に属する適切なterm-idを入れるためにどのようにそのスニペットを修正するでしょうか?
ありがとう
編集
この関数は私にとって正しいterm_idを返します。
$terms = wp_get_post_terms($post->ID, "speaker");
foreach ($terms as $termid) {
echo $termid->term_id;
}
私の例のページの私のループの中でそのスニペットを使うことは '221'の値を返します。関数内でterm_idの代わりに221を手動で設定すると、メタ 'bio'という用語が完全に引き出されます。
私がまだ立ち往生しているところ
上記の小さなコードのスニペットが完成したので、それをterm_idに出力して主な関数が機能するようにするにはどうすればよいですか。
$meta = isset($meta['term_id']) ? $meta['term_id'] : array();
再度、感謝します
特定の分類法でその投稿の用語を取得するためにget_the_terms()
関数を使うことができます。
$terms = get_the_terms( $post->ID , 'speaker' ); //change speaker to whatever you call your taxonomy
//then you can use just the first term
$term_id = $terms[0]->term_id;
そして今、あなたは$term_id
の中に用語idを持っています。
Term_idを取得したら、次のようにそれを関数内で使用できます。
$term_id = $termid->term_id;
$meta = isset($meta[$term_id]) ? $meta[$term_id] : array();
wp_get_post_terms()
関数を使ってもできます。
$terms = wp_get_post_terms($post->ID, "speaker");
foreach ($terms as $termid) {
echo $termid->term_id;
}
現在の記事のすべての分類条件が表示されます。
注:ループの内側にある必要があります
Archive.phpページにいて現在の用語が必要な場合
var_dump($wp_query->queried_object);
var_dump($wp_query->queried_object->name);
var_dump($wp_query->queried_object->term_id);