我正在使用WordPress'原生函数get_the_terms 并返回此数组,其中包含一个对象:
array (size=2)
157 =>
object(stdClass)[41]
public 'term_id' => int 157
public 'name' => string 'Entertainment' (length=13)
public 'slug' => string 'entertainment' (length=13)
public 'term_group' => int 0
public 'term_taxonomy_id' => int 157
public 'taxonomy' => string 'category' (length=8)
public 'description' => string '' (length=0)
public 'parent' => int 0
public 'count' => int 1
public 'object_id' => int 644
public 'filter' => string 'raw' (length=3)
151 =>
object(stdClass)[40]
public 'term_id' => int 151
public 'name' => string 'Featured' (length=8)
public 'slug' => string 'featured' (length=8)
public 'term_group' => int 0
public 'term_taxonomy_id' => int 151
public 'taxonomy' => string 'category' (length=8)
public 'description' => string '' (length=0)
public 'parent' => int 0
public 'count' => int 1
public 'object_id' => int 644
public 'filter' => string 'raw' (length=3)
如何访问
public 'name' => string 'Featured' (length=8)
这有效
$terms = get_the_terms( $post->ID, 'category' );
foreach ($terms as $term) {
$test = $term->name;
echo $test;
}
这不起作用:
for($i=1; $i<3; $i++) {
$term = $terms->name;
echo $term;
}
这也不起作用
for($i=1; $i<3; $i++) {
$term = $terms[0]->name;
//$term = $terms[1]->name;
//$term = $terms[157]->name; // works but not reliable
echo $term;
}
为什么?
答案 0 :(得分:1)
函数get_the_terms
返回一个数组,该数组由每个元素的term_id
索引。
这就是为什么$terms[157]
和$terms[151]
按预期工作的原因。有关此行为的详细信息,请参阅PHP reference on arrays。
您最好的选择是坚持使用内置的foreach
,其效果与您的问题相同。
答案 1 :(得分:1)
在for循环中,您尝试直接在数组中访问名称,而不是stdclass
对象。
您需要使用$i
变量作为数组的索引。
for ($i=1; $i<3; $i++) {
$term = $terms[$i]->name;
echo $term;
}
答案 2 :(得分:0)
使用 wp_parse_args 系统管理其单个 $ args 参数的功能,可以为您提供所需的任何值。在这种情况下,$ args存储详细的显示覆盖,这是在许多WordPress函数中找到的模式。
$args = wp_parse_args( $args, $term->name );
echo $arg[157]['term_id']; //output 157
echo $arg[157]['name']; //output Entertainment
为我提供更多详细信息