当为Term分配POST时,Has_Term()不返回吗?

时间:2014-01-07 作者:Joshc

好的,我有一个归档循环。

在这个循环中,我有这个。。。

<?php if ( has_term(\'race\') ) { ?>
   <strong class="archive-event"><?php the_title($event); ?></strong>
<?php } ?>
但它没有显示什么!?

我把这些术语分配给了这个职位。。。

税:报告类型术语:种族税:季节年术语:motogp-2013我的问题是,为什么这不返回任何结果?或者,如果帖子指定了术语,我应该使用什么函数来显示(在循环中)某些内容?

奇怪的是,这样做。。。

<?php if ( has_term(\'race\', \'report-type\', $post->ID )) { ?>

1 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

我怀疑the Codex information for has_term() 不正确:

<?php has_term( $term, $taxonomy, $post ) ?>
对于$taxonomy 参数:

$分类法(字符串)(可选)分类法名称默认值:“”

但是如果你看the source for has_term():

$r = is_object_in_term( $post->ID, $taxonomy, $term );
所以,$taxonomy 已传递给is_object_in_term():

<?php is_object_in_term( $object_id, $taxonomy, $terms = null ) ?>
这说明$taxonomy 参数:

$分类法(字符串)(必需)单个分类法名称。默认值:无

(一看source for is_object_in_term() 确认$taxonomy 参数是必需的,并将导致返回false 如果未通过。)

因此,似乎未能通过$taxonomyhas_term() 将导致has_term() 正在返回false.

似乎源内联文档已相应更新:

* @param string|int|array $term Optional. The term name/term_id/slug or array of them to check for.
* @param string $taxonomy Taxonomy name
* @param int|object $post Optional. Post to check instead of the current post.
* @return bool True if the current post has any of the given tags (or any tag, if no tag specified).
The$taxonomy 参数不再列为Optional.

结束

相关推荐

Output terms to post_class()

我试图将附加到特定帖子的所有术语(包括自定义分类术语)输出为应用于div的CSS类,如下所示: <div <?php post_class(\'class-name\'); ?>></div> 所以它输出如下: <div class=\"class-name term1 term2 term3 term4\"></div> 我该怎么做?谢谢