看看documentation for the_terms()
. 它至少需要两个参数—post ID和分类名称。您没有给出这两种方法中的任何一种(我当然假设您的分类法没有被调用taxonomy-name
).
然而,在这种情况下,您也使用了错误的函数。the_terms()
is used to display (i.e. echo out) a list of terms, 不要在if
陈述你想要的功能是get_the_terms()
. 需要注意的一点是,许多WordPress函数遵循类似的命名方案:通常,函数以get_
将返回值(用于比较或保存以备以后使用),而函数以the_
将回显值。
那么,让我们看看get_the_terms()
. 正在查看the documentation, 所需的参数类似:post ID(或post对象)和分类名称。所以,我们会看到这样的情况:
$especiais = get_the_terms( $post, \'taxonomy-name\' );
// replace taxonomy-name with the name of your taxonomy!
这将返回一个术语对象数组,而不是单个术语(您可以通过运行
print_r( $especiais );
- 使用print\\u r()是确认从函数返回哪些数据的好方法,并且通常是调试代码时的好习惯)。
最后,我们需要通过该阵列检查您要寻找的子弹。但是,在我们确认我们确实拿回了一个数组之前,你永远也不能太确定(尤其是如果根本没有指定术语,或者我们在分类名称上犯了错误):
if( is_array( $especiais ) && count( $especiais ) ) { // is it an array, and with items?
foreach( $especiais as $term ) { // loop through each term...
if( $term->slug === \'series_especiais\' ) { // ...till we find the one we want!
?>
<div> put your div and other content here </div>
<?php
break; // avoid searching the rest of the terms; we\'ve already found what we want
}
}
}
因此,要吸取的教训是:始终查找您使用的函数的文档。这个
official Code Reference 是一个很好的开始,否则通常只需在谷歌上搜索函数名也会有所帮助。
<小时>EDIT: 经过我们在评论中的讨论,发现在术语和分类法上有点混乱。如果在您的案例中,分类名称为“series\\u speciais”,并且您只想确定帖子在该分类中是否有任何术语,您可以跳过foreach
完全循环。这里有一个重写:
$especiais = get_the_terms( $post, \'series_especiais\' );
if( is_array( $especiais ) && count( $especiais ) ) { // is it an array, and with items?
?>
<div> put your div and other content here </div>
<?php
}
更简单:)我也将上面的其余代码留在这里,因为它可能会帮助其他人!