函数wp_get_post_terms
返回一个对象
$terms = wp_get_post_terms( get_the_ID(), 'category', $args );
我需要根据它的值删除其中一个对象:
$current_id = get_queried_object_id();
foreach( $terms as $key => $value ){
if( in_array($current_id, $value[$key]) ){
unset($terms[$key]);
}
}
但是我陷入了这个错误:
未捕获错误:无法使用WP_Term类型的对象作为数组
答案 0 :(得分:1)
我认为你的错误在于:
if( in_array($current_id, $value[$key]) ){
因为$value
是WP_Term,但您尝试使用$key
(链接到$terms
而不是$value
的索引来访问它。
答案 1 :(得分:1)
您可能希望将有效字词保存到第二个数组中:
$terms = wp_get_post_terms( get_the_ID(), 'category', $args );
$validTerms = [];
$current_id = get_queried_object_id();
foreach( $terms as $key => $value ){
if( $value->term_id != $current_id) {
$validTerms[$key] = $value;
}
}
错误源于if
声明,正如Julien Lachal所解释的那样。
因此,以下是与unset
相同的答案term
:
$terms = wp_get_post_terms( get_the_ID(), 'category', $args );
$current_id = get_queried_object_id();
foreach( $terms as $key => $value ){
if( $value->term_id == $current_id) {
unset($terms[$key]);
break; //Found our guilty term, no need to continue the `foreach`.
}
}