对要在新的wp_查询中使用的获取术语感到困惑

时间:2018-01-17 作者:NielsPilon

我正在进行一个查询,根据分配给当前职位的术语显示CPT的相关项目。

我已经有了完成查询的代码,但不明白为什么我的初始代码返回NULL

要获得分配给该职位的术语,我使用以下代码

$terms = get_the_terms( $post->ID, \'taxonomy_name\' );
如果我对$terms 我得到这个作为回报

array(1) { [0]=> object(WP_Term)#1423 (10) { ["term_id"]=> int(5) ["name"]=> 
string(6) "Bilbao" ["slug"]=> string(6) "bilbao" ["term_group"]=> int(0) 
["term_taxonomy_id"]=> int(5) ["taxonomy"]=> string(15) "taxonomy_name" 
["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(2) 
["filter"]=> string(3) "raw" } }
要在我的wp\\u查询中使用slug,我想我可以使用$terms->slug. 但是,这将返回NULL。

在搜索之后,我发现这个调整解决了这个问题foreach ( $terms as $term ) 然后$term->slug

我只是不明白为什么我应该为每个部分使用,而不能使用$terms 在我的查询中。有人能给我解释一下吗?

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

$terms 是一个术语数组,所以PHP不知道你说的是什么意思$terms->slug.

使用foreach,您将遍历此数组。如果您只关心第一个元素,那么可以简单地使用$slug = $terms[0]->slug;. 但是,当没有条款时,这会给您带来麻烦,因此您需要确保只有在有条款的情况下才能使用类似

$queryparams = array("post_type" => "mycpt");
if(count($terms)) {
    $slug = $terms[0]->slug;
    // modifiy your queryparams here
    $queryparams["tax_query"] = ...
}

SO网友:D. Dan

换句话说,因为您有一个对象数组(在本例中,您只有一个对象)。您希望访问对象slug,而不是数组的slug。

结束

相关推荐

更改_Terms中的最后一个分隔符

我如何展示the_terms 带逗号和“&;”在最后一个之前示例:标记:书籍、评论和;历史我需要在术语和a之间显示“,”&上学期之前。我使用以下代码来显示the_terms 在单个岗位上:<?php the_terms( $post->ID, \'post_tag\', \'Tags: \', \', \', \' \' ); ?>