我有自定义的帖子类型“布道”,附带自定义的分类法“说话人”。我想为说话人分类法分配自定义元值,因此我使用Rilwis的分类法元类:
http://www.deluxeblogtips.com/p/taxonomy-meta-script-for-wordpress.html
我使用该类添加了一个id为“bio”的metabox。
根据他的指示,我需要使用以下代码,以便将“bio”meta的值输出到我的模板中:
$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
Here is what ended up working for me:
$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
Question
在上面的代码中,您可以看到数字“221”。这是分配给相关帖子的分类法的实际术语id(硬编码以测试它)。我不明白的是如何动态填充term\\u id。
我无法查询url,因为这只是在自定义贴子类型的单个页面上使用,所以这里没有术语id。
我该如何修改该片段,以将属于我正在查看的“布道”的适当术语id放入其中?
谢谢
edit
此函数为我返回正确的term\\u id:
$terms = wp_get_post_terms($post->ID, "speaker");
foreach ($terms as $termid) {
echo $termid->term_id;
}
在我的示例页面上的循环中使用该片段将返回值“221”。如果我手动将221替换为函数中的term\\u id,那么它确实完美地提取了术语meta“bio”。
Where I am still stuck
现在我有了上面的一个小片段,如何将其输出到term\\u id,以便主函数工作?
$meta = isset($meta[\'term_id\']) ? $meta[\'term_id\'] : array();
再次感谢
最合适的回答,由SO网友:Bainternet 整理而成
您可以使用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;
现在你有了术语id
$term_id
.
更新
一旦您有了term\\u id,就可以在函数中使用它,如下所示:
$term_id = $termid->term_id;
$meta = isset($meta[$term_id]) ? $meta[$term_id] : array();