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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:50:01