如何设置Woocommerce优惠券仅在特定预订日期可用?
WooCommerce优惠券限定预订日期及使用时间设置
一、先设置优惠券的基础使用时间范围
- 登录WordPress后台,进入「WooCommerce」→「优惠券」,找到你已发布的那张优惠券并点击编辑。
- 在优惠券编辑页的「常规」选项卡中,找到「有效期」板块:
- 把「开始日期」设为2023年1月20日,「结束日期」设为2023年1月29日。
- 保存设置,这一步确保优惠券仅在这个时间段内可被用户尝试使用。
二、关联预订日期验证(关键步骤)
默认WooCommerce没有内置预订日期字段,你大概率用了WooCommerce Bookings插件或者自定义的预订日期字段,分两种情况处理:
情况1:用WooCommerce Bookings插件
- 回到优惠券编辑页,切换到「使用限制」选项卡:
- 找到「预订日期限制」(部分版本叫「日期范围」),勾选启用后,设置允许的预订日期范围为2023年1月20日至29日。
- 同时在「允许的预订产品」里选中你要绑定的预订类商品,避免优惠券被用在非预订商品上。
情况2:用自定义预订日期字段(无插件)
如果是自己通过代码或自定义字段插件加的预订日期字段,需要加一段自定义代码做验证:
- 打开主题的「functions.php」文件,或者用代码片段插件,添加以下代码:
add_filter('woocommerce_coupon_is_valid', 'validate_coupon_booking_date', 10, 2); function validate_coupon_booking_date($is_valid, $coupon) { // 替换成你的目标优惠券代码 if ($coupon->get_code() !== 'YOUR_COUPON_CODE') { return $is_valid; } // 遍历购物车商品,检查预订日期 foreach (WC()->cart->get_cart() as $cart_item) { // 替换成你的自定义预订日期字段键名 $booking_date = get_post_meta($cart_item['product_id'], 'YOUR_BOOKING_DATE_FIELD', true); if (!$booking_date) continue; // 转换为时间戳做范围判断 $booking_ts = strtotime($booking_date); $allowed_start = strtotime('2023-01-20'); $allowed_end = strtotime('2023-01-29'); if ($booking_ts < $allowed_start || $booking_ts > $allowed_end) { $is_valid = false; wc_add_notice('该优惠券仅适用于2023年1月20日至29日的预订', 'error'); break; } } return $is_valid; }
- 把代码里的
YOUR_COUPON_CODE换成你的优惠券实际代码,YOUR_BOOKING_DATE_FIELD换成你自定义的预订日期字段键名,保存后就能生效。
三、测试验证
- 选一个不在2023.1.20-29范围内的预订日期,尝试用优惠券,应该会弹出错误提示。
- 选范围内的日期,使用优惠券,应该能正常抵扣。
内容的提问来源于stack exchange,提问作者Rjay Artates
相关产品推荐
相关产品推荐

