web-dev-qa-db-ja.com

カスタムsingle-post-type.phpテンプレートページでカスタム分類法に属する用語IDを取得します

カスタム分類法の「スピーカー」が付いたカスタム投稿タイプの「説教」があります。私はカスタムメタ値を話者分類法に割り当てたいと思ったので、私は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();

再度、感謝します

1
shawn

特定の分類法でその投稿の用語を取得するために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();
1
Bainternet

wp_get_post_terms()関数を使ってもできます。

$terms = wp_get_post_terms($post->ID, "speaker");
foreach ($terms as $termid) {  
  echo $termid->term_id;  
} 

現在の記事のすべての分類条件が表示されます。

注:ループの内側にある必要があります

0
KOt

Archive.phpページにいて現在の用語が必要な場合

var_dump($wp_query->queried_object);
var_dump($wp_query->queried_object->name);
var_dump($wp_query->queried_object->term_id);
0
Aram Kocharyan