WordPress have_posts多分类查询如何实现全分类AND匹配
解决方案
你当前使用product_cat参数传分类数组时,WordPress默认执行OR逻辑匹配,仅要求产品属于任意一个指定分类就会返回。要实现必须同时匹配$all_cats中所有分类的需求,需要替换为tax_query参数手动指定查询规则。
修改后的完整代码如下:
$args = array( 'post_type' => 'product', 'posts_per_page' => 500, // 替换原来的product_cat参数,改用tax_query实现AND逻辑匹配所有分类 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'field' => 'slug', // 如果$all_cats存的是分类ID,这里改成'term_id'即可 'terms' => $all_cats, 'operator' => 'AND', // 关键参数,要求必须匹配所有指定分类 ) ), 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'style', 'value' => $rug_style, 'compare' => 'IN', ), array( 'key' => 'rug_color', 'value' => $rug_color, 'compare' => '=', ), ), );
注意事项
- 请确认
field参数的取值和$all_cats数组存储的内容对应:如果$all_cats存的是分类的别名(slug)就保留slug,存的是分类ID就改为term_id,否则会出现查询无结果的问题 - 该逻辑不限制产品本身关联的分类数量,只要产品包含
$all_cats里的所有分类就会返回,额外关联其他分类不影响匹配结果 - 原有ACF字段的关联查询逻辑无需修改,可正常生效
内容的提问来源于stack exchange,提问作者Chris Cummings
相关产品推荐
相关产品推荐

