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

WooCommerce中WP_Query如何包含无pre_orders_enabled及值为no的商品

修改WP_Query以包含未设置pre_orders_enabled字段的商品

要同时获取pre_orders_enabled元字段值为no和未设置该字段的商品,你需要调整meta_query的结构,通过OR关系组合两个针对pre_orders_enabled的条件,同时保持与库存状态条件的AND关系。

修改后的完整代码如下:

$products = new WP_Query( array(
    'post_type'      => 'product',
    'starts_with'    => $letra,
    'posts_per_page' => -1,
    'order'          => 'DESC',
    'meta_query'     => array(
        // 库存状态条件:必须为instock
        array(
            'key'     => '_stock_status',
            'value'   => 'instock',
            'compare' => '=',
        ),
        // pre_orders_enabled的复合条件:满足任一即可
        array(
            'relation' => 'OR',
            array(
                'key'     => 'pre_orders_enabled',
                'value'   => 'no',
                'compare' => '=',
            ),
            array(
                'key'     => 'pre_orders_enabled',
                'compare' => 'NOT EXISTS',
            ),
        ),
    ),
) );

关键修改说明:

  • 外层meta_query默认关系为AND,确保商品必须满足库存为instock,同时满足pre_orders_enabled的复合条件
  • 新增一个嵌套的meta_query数组,设置relation为OR,包含两个子条件:
    1. 匹配pre_orders_enabled值为no的商品
    2. 匹配不存在pre_orders_enabled元字段的商品(通过compare => 'NOT EXISTS'实现)

内容的提问来源于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:28:15