WP_Query添加_stock_status库存状态筛选失败问题求助
解决WP_Query同时筛选预售状态和库存状态的问题
你之前的写法无效,是因为原meta_query的relation设为OR,直接把库存条件加进去后,三个条件会是或的关系——只要满足「预售关闭」「无预售字段」「库存在售」其中任意一个就会被筛选出来,这显然不是你要的「库存在售 +(预售关闭/无预售字段)」的逻辑。
正确的做法是把预售相关的两个条件嵌套成一个子数组,外层meta_query用AND关系,让「预售条件组」和「库存条件」必须同时满足:
$products = new WP_Query( array( 'post_type' => 'product', 'starts_with' => $letra, 'posts_per_page' => -1, 'order' => 'DESC', 'meta_query' => array( 'relation' => 'AND', // 外层是且的关系 // 第一个条件组:预售关闭 或 无预售字段 array( 'relation' => 'OR', array( 'key' => '_pre_orders_enabled', 'value' => 'no', 'compare' => '=', ), array( 'key' => '_pre_orders_enabled', 'compare' => 'NOT EXISTS', ), ), // 第二个条件:库存状态为在售 array( 'key' => '_stock_status', 'value' => 'instock', 'compare' => '=', ), ), ) );
这样修改后,WP_Query会先筛选出满足预售条件的产品,再从中挑出库存状态为instock的,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Edu Rafael
相关产品推荐
相关产品推荐

