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

如何设置Woocommerce优惠券仅在特定预订日期可用?

WooCommerce优惠券限定预订日期及使用时间设置

一、先设置优惠券的基础使用时间范围

  1. 登录WordPress后台,进入「WooCommerce」→「优惠券」,找到你已发布的那张优惠券并点击编辑。
  2. 在优惠券编辑页的「常规」选项卡中,找到「有效期」板块:
    • 把「开始日期」设为2023年1月20日,「结束日期」设为2023年1月29日。
    • 保存设置,这一步确保优惠券仅在这个时间段内可被用户尝试使用。

二、关联预订日期验证(关键步骤)

默认WooCommerce没有内置预订日期字段,你大概率用了WooCommerce Bookings插件或者自定义的预订日期字段,分两种情况处理:

情况1:用WooCommerce Bookings插件

  1. 回到优惠券编辑页,切换到「使用限制」选项卡:
    • 找到「预订日期限制」(部分版本叫「日期范围」),勾选启用后,设置允许的预订日期范围为2023年1月20日至29日。
    • 同时在「允许的预订产品」里选中你要绑定的预订类商品,避免优惠券被用在非预订商品上。

情况2:用自定义预订日期字段(无插件)

如果是自己通过代码或自定义字段插件加的预订日期字段,需要加一段自定义代码做验证:

  1. 打开主题的「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;
}
  1. 把代码里的YOUR_COUPON_CODE换成你的优惠券实际代码,YOUR_BOOKING_DATE_FIELD换成你自定义的预订日期字段键名,保存后就能生效。

三、测试验证

  • 选一个不在2023.1.20-29范围内的预订日期,尝试用优惠券,应该会弹出错误提示。
  • 选范围内的日期,使用优惠券,应该能正常抵扣。

内容的提问来源于stack exchange,提问作者Rjay Artates

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:35:20