You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP检查WordPress的WP_Term对象数组中是否存在指定值

检查WordPress WP_Term数组中是否存在指定值

没问题,我来帮你搞定这个需求!你的$terms变量是包含WP_Term对象的数组,不能直接用普通的in_array()检查,因为每个元素是对象而非简单值。下面给你几种实用的实现方式:

1. 快速检查单一字段值(推荐)

如果只是要验证某个字段(比如name、term_id、slug)是否存在,可以用array_column()提取对应字段的所有值,再结合in_array()判断:

示例:检查是否存在名称为"Tshirts"的术语

// 从WP_Term对象数组中提取所有name字段值
$all_term_names = array_column($terms, 'name');

// 检查指定值是否存在
if (in_array('Tshirts', $all_term_names)) {
    echo "存在名称为Tshirts的术语!";
} else {
    echo "未找到该术语";
}

示例:检查是否存在term_id为30的术语

$all_term_ids = array_column($terms, 'term_id');

if (in_array(30, $all_term_ids)) {
    // 存在时的业务逻辑
    echo "找到term_id为30的术语";
}

2. 灵活匹配复杂条件(如需获取匹配对象)

如果你需要更灵活的判断(比如同时检查分类法和slug),或者要获取匹配的WP_Term对象本身,可以用array_filter():

// 查找slug为"pants"且分类法为"clothes"的术语
$matched_terms = array_filter($terms, function($term) {
    // 这里可以自定义匹配条件
    return $term->slug === 'pants' && $term->taxonomy === 'clothes';
});

// 判断是否存在匹配结果
if (!empty($matched_terms)) {
    echo "找到匹配的术语!";
    // 获取第一个匹配的对象(如果有多个)
    $first_matched_term = reset($matched_terms);
    echo "匹配术语的ID:" . $first_matched_term->term_id;
} else {
    echo "未找到符合条件的术语";
}

补充说明

  • array_column()可以直接从对象数组中提取属性值,是PHP 5.5+支持的函数,WordPress环境一般都满足要求。
  • 如果你的PHP版本较低,也可以用array_map()替代array_column():
    $all_term_names = array_map(function($term) {
        return $term->name;
    }, $terms);
    

内容的提问来源于stack exchange,提问作者user13286

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:04:27