Woocommerce:在结账时一次只能使用一个优惠券【纯代码】

tencent promotion
原创作者: Fengjiajun

Woocommerce:在结账时一次只能使用一个优惠券【纯代码】

在运营WooCommerce独立站时,优惠券是吸引顾客、提升销量的重要工具。WooCommerce本身提供了灵活的优惠券设置,允许我们为每个优惠券单独设置使用规则,例如设置“单独使用”选项,限制该优惠券不能与其他优惠券叠加使用。然而,在某些情况下,我们可能希望更进一步,对整个网站设置“在结账时一次只能使用一个优惠券”的规则。

比如,当我们的独立站接入了联盟营销后,联盟营销可能会自动在网站后台设置各种优惠券,而此时这些优惠券默认情况是没有限制叠加使用,可能会导致客户同时使用多个优惠券,最终影响到实际成交价格;

虽然WooCommerce本身没有提供直接设置全局的“一次只能使用一个优惠券”的选项,但我们可以通过添加自定义代码来实现这个功能。

add_action('woocommerce_applied_coupon', 'restrict_single_coupon_usage', 10, 1);
function restrict_single_coupon_usage($coupon_code) {
    $applied_coupons = WC()->cart->get_applied_coupons();
    if (count($applied_coupons) > 1) {
        WC()->cart->remove_coupon($coupon_code);
        // 显示错误消息,这里的错误消息可以自己随意修改
        wc_add_notice(__('一次只能使用一个优惠券。', 'woocommerce'), 'error');
    }
}

使用方法:将以上代码添加到主题的 functions.php 文件或自定义插件中。保存更改后,代码即可生效。
注意事项:该代码仅适用于WooCommerce默认的优惠券功能,如果您使用了其他优惠券插件,可能需要根据插件文档进行相应的修改。在添加代码之前,建议备份网站数据,以防出现意外情况。