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

WP_Query中meta_query与tax_query组合仅选meta值无结果如何解决

问题根因

  • 未选中分类时,tax_query 传入了空的terms参数,WordPress会将其解析为匹配无对应分类项的文章,直接过滤掉所有结果
  • meta_query 结构错误:将relation写为字符串常量而非数组键,同时把meta条件数组作为嵌套子数组传入,不符合WP_Query的参数规范

修正代码(仍然使用原生WP_Query,符合不使用自定义SQL查询的要求)

$category_array= [];
$metabox_array = [];
foreach($_POST as $key => $value){      
    if($key == 'ms_product_categories'){
        foreach($value as $cat_slug){
            $category_array[] = $cat_slug;
        }           
    }else{          
        $metabox_array[] = array('key' => $key, 'value' => $value );
    }
}       

$args = array(
    'post_type' => 'ms_product',        
);

// 仅当有meta筛选条件时添加meta_query
if(!empty($metabox_array)){
    $meta_query = $metabox_array;
    if(count($metabox_array) >= 2){
        $meta_query['relation'] = 'AND';
    }
    $args['meta_query'] = $meta_query;
}

// 仅当有分类筛选条件时添加tax_query
if(!empty($category_array)){
    $args['tax_query'] = array(
        array(
            'taxonomy'  => 'ms_product_categories',
            'field' => 'slug',
            'terms'    => $category_array               
        ),
    );
}

$ms_products = new WP_Query( $args );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:39:02