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

WordPress中通过user ID获取order ID时is_array函数无法返回结果如何解决

WordPress代码问题排查及修复

现有代码问题清单

  • 函数无返回值:is_array分支内执行完查询后没有return语句,外部调用无法拿到查询结果
  • 查询方法使用错误:仅需要获取单个ref_id字段的值,使用$wpdb->get_results()会返回对象数组,不符合取值需求,应该使用$wpdb->get_var()直接获取单字段结果
  • 缺省分支无处理逻辑:非数组类型的参数输入时,函数没有任何返回逻辑
  • 无空查询结果兜底:如果数据库没有匹配到对应记录,没有返回默认值方便上层逻辑判断

修复后的代码

public function get_order_id( $params = 0 ) {
    global $wpdb;
    // 数组参数分支:传入user_id和course_id查询对应order ID
    if( is_array($params) ){
        // 校验数组必填字段,避免索引不存在报错
        if( !isset($params['user_id'], $params['course_id']) ) {
            return 0;
        }
        $query = $wpdb->prepare(
            "SELECT ref_id 
            FROM {$wpdb->prefix}user_items 
            WHERE user_id = %d AND item_id = %d AND ref_type = %s",
            $params['user_id'],
            $params['course_id'], 
            'order'
        );
        // 直接获取单字段值,查询不到返回null,兜底返回0
        return $wpdb->get_var($query) ?: 0;
    }
    // 非数组分支:可根据实际需求调整这部分逻辑,当前保留原参数直接返回的兼容逻辑
    return is_numeric($params) ? intval($params) : 0;
}

额外优化说明

  • 把参数名从$order_id改成了$params,避免参数名和实际传值语义不符导致的维护问题
  • 增加了数组必填字段校验,避免传入数组缺少user_id或course_id时抛出PHP警告
  • 所有分支都有明确返回值,查询不到结果时统一返回0,方便上层调用时做判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:45:05