如何在WooCommerce中设置每件商品每日订单的最大数量限制
WooCommerce 商品每日下单量限制实现方案
核心用到的Hook
你需要用到两个核心Hook覆盖加购、下单两个关键节点,避免规则被绕过:
- 加购阶段校验:
woocommerce_add_to_cart_validation
这个Hook会在用户将商品加入购物车时触发,提前拦截超出限额的加购请求 - 结账提交阶段二次校验:
woocommerce_checkout_process
这个Hook会在用户提交订单前触发,避免用户绕过加购校验直接提交订单的情况
基础实现逻辑参考
你可以按照以下逻辑开发对应的校验函数:
- 先给商品新增自定义字段,用于存储每个商品的每日下单量上限数值
- 在校验函数中,查询当日该商品的有效订单总购买数量,参考查询代码:
// 统计当日指定商品的已售数量 $today_sold = 0; $order_args = array( 'post_type' => 'shop_order', 'post_status' => array('wc-processing', 'wc-completed', 'wc-on-hold'), 'posts_per_page' => -1, 'date_query' => array( array( 'after' => 'today midnight', 'before' => 'tomorrow midnight', ), ), ); $orders = wc_get_orders($order_args); foreach ($orders as $order) { foreach ($order->get_items() as $item) { if ($item->get_product_id() == $target_product_id) { $today_sold += $item->get_quantity(); } } }
- 将查询到的当日销量和该商品设置的上限对比,超出则抛出错误提示,终止加购/下单流程
注意事项
- 计算销量时需要包含已支付、处理中、待发货的有效订单,避免用户占单后取消导致的限额统计不准
- 如果是多规格商品,可根据变体ID单独统计销量,或者按照父商品ID统一统计,根据你的业务需求调整即可
内容的提问来源于stack exchange,提问作者Adnan Shahin
相关产品推荐
相关产品推荐

