在定制的Single-Post-type.php模板页面上获取属于定制分类的术语id

时间:2011-06-14 作者:shawn

我有自定义的帖子类型“布道”,附带自定义的分类法“说话人”。我想为说话人分类法分配自定义元值,因此我使用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();
再次感谢

3 个回复
最合适的回答,由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();

SO网友:KOt

你可以用wp_get_post_terms() 功能还包括:

$terms = wp_get_post_terms($post->ID, "speaker");
foreach ($terms as $termid) {  
  echo $termid->term_id;  
} 
它将显示当前帖子的所有分类术语。

NOTE: 它必须在循环内

SO网友:Aram Kocharyan

如果你在档案室。php页面,需要当前术语:

var_dump($wp_query->queried_object);
var_dump($wp_query->queried_object->name);
var_dump($wp_query->queried_object->term_id);

结束

相关推荐

根据所选类别验证Metabox

好吧,假设我有两个类别。如果用户选择类别a,他们必须填写元框a,类似地,对于类别B,它是元框B。所以我的问题是,我想做一个验证检查,如果用户选中了类别a,那么只填写了元框a,这同样适用于类别B。我知道JQuery是我的最佳选择,但不太确定如何进行,也不确定单击发布按钮时如何调用该函数。