如何用array_filter移除WP_Term数组中name为Staff的项
WordPress中过滤WP_Term数组移除指定name元素的正确方法
你需要移除$tax_terms数组中name属性为'Staff'的WP_Term对象,之前尝试的写法存在两个核心错误:
$tax_terms是数组,不能用->直接访问属性- 错误地把
name当成数组取值,实际每个$value是WP_Term对象,name是它的直接属性
正确实现代码
$tax_terms = array_filter($tax_terms, function ($value) { // 保留name不等于'Staff'的元素,即移除name为'Staff'的项 return $value->name !== 'Staff'; });
代码说明
array_filter会遍历$tax_terms数组的每一个元素,将每个元素传入回调函数- 回调中的
$value是单个WP_Term对象,直接通过$value->name获取其名称属性 - 返回
true的元素会被保留,返回false的元素会被过滤掉,因此$value->name !== 'Staff'正好实现移除目标元素的需求
可选:不区分大小写的过滤
如果需要忽略大小写(比如匹配'staff'、'STAFF'等),可以改用strcasecmp函数:
$tax_terms = array_filter($tax_terms, function ($value) { // 不区分大小写比较,返回非0值表示不相等,即保留元素 return strcasecmp($value->name, 'Staff') !== 0; });
内容的提问来源于stack exchange,提问作者klewis
相关产品推荐
相关产品推荐

