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,包含两个子条件:- 匹配
pre_orders_enabled值为no的商品 - 匹配不存在
pre_orders_enabled元字段的商品(通过compare => 'NOT EXISTS'实现)
- 匹配
内容的提问来源于stack exchange,提问作者Edu Rafael
相关产品推荐
相关产品推荐

