仅当存在值时才显示分类术语

时间:2016-03-21 作者:palekjram

我有一个帖子类型,我想添加一些分类法值(标记)

示例Post Type One

  1. City: 伦敦、巴黎Color: 红色、黄色Language:
在上面的示例中,语言没有任何价值,因此,我想隐藏它。

我有以下代码:

<?php
$lang= get_terms( \'lang\' );
if ( !empty( $lang)) {
     echo \'<li><strong>Language:</strong>\';
    the_terms( $post->ID, \'lang\', \' \', \', \' );
    echo \'</li>\';
}
?>
但是Language 即使我没有在其上添加任何标记,仍将显示。

2 个回复
最合适的回答,由SO网友:Sumit 整理而成

get_terms() 返回分类法中的所有术语,无论当前帖子是什么。所以如果当前帖子没有lang 条款仍然符合此条件if ( !empty( $lang)) 将是true 因此,它将显示文本Language.

使用get_the_term_list 而不是the_terms 它返回术语列表而不是打印,因此输出可用于这两个目的。

示例:-

$lang = get_the_term_list( get_the_ID(), \'lang\', \' \', \', \' );
if ( !empty( $lang)) {
    echo \'<li><strong>Language:</strong>\' . $lang . \'</li>\';
}
注:建议使用get_the_ID() 而不是全局$post->ID

SO网友:Jubayer Shamshed

在wordpress中get_terms() 函数返回WP\\u Term实例及其子实例的列表(array/int/WP\\u Error)。如果任何$分类法不存在,将返回WP\\u错误。

因此,无需将if条件修改为以下条件

if ( ! empty( $lang ) && ! is_wp_error( $lang ) ){
 //your code....
}
希望它能解决你的问题。

相关推荐

GET_POSTS查询大约需要40秒来执行

我在get\\u帖子中有一个元查询,它需要花很长时间才能完成。它工作得很好,但只是时间太长了。我有一个名为event. 在每个event 发布后,有自定义元数据:post\\U sort\\U日期(事件日期YmdHis 格式,用于排序)我需要做的是获取下一个事件,该事件相对于$year 和$month 变量。所以如果$year = 2021 和$month = 10 (2021 10月)然后应该在2021 11月或之后找到第一个事件。我下面的查询很好,但很慢。执行大约需要40秒,我不知道为什么。$next