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

WooCommerce中基于已应用优惠券限制支付网关并显示提示消息的问题

WooCommerce中基于已应用优惠券限制支付网关并显示提示消息的问题

看起来你已经搞定了用优惠券限制支付网关的核心逻辑,不过在结账页面顶部的WooCommerce通知区显示提示消息这块卡壳了对吧?我来帮你完善代码,把通知显示的问题也解决掉。

首先,你的原代码思路是对的,但显示通知需要用到WooCommerce官方的通知函数和合适的钩子,这样消息才能正确出现在指定区域。下面是完整的改进代码:

// 基于已应用优惠券限制支付网关并添加提示通知
add_filter('woocommerce_available_payment_gateways', 'unset_gateway_by_applied_coupons');
add_action('woocommerce_before_checkout_form', 'display_coupon_payment_notice');

function unset_gateway_by_applied_coupons($available_gateways) {
    // 后台页面跳过,避免报错
    if (is_admin()) {
        return $available_gateways;
    }

    // 设置要触发限制的优惠券代码
    $target_coupons = array('test123', 'check123');
    $applied_coupons = WC()->cart->get_applied_coupons();

    // 检查是否有目标优惠券被使用
    $has_target_coupon = !empty(array_intersect($target_coupons, $applied_coupons));

    if ($has_target_coupon) {
        // 移除BACS支付网关(保留Stripe)
        if (isset($available_gateways['bacs'])) {
            unset($available_gateways['bacs']);
        }
    }

    return $available_gateways;
}

function display_coupon_payment_notice() {
    // 仅在前台结账页面执行
    if (!is_checkout() || is_admin()) {
        return;
    }

    $target_coupons = array('test123', 'check123');
    $applied_coupons = WC()->cart->get_applied_coupons();

    if (!empty(array_intersect($target_coupons, $applied_coupons))) {
        // 添加提示消息到WooCommerce通知区域
        wc_add_notice('您使用了专属优惠券,当前仅支持Stripe支付方式', 'notice');
    }
}

代码说明:

  • 我把功能拆成了两个独立函数,逻辑更清晰:一个负责过滤支付网关,一个负责显示通知。
  • 使用array_intersect来检查优惠券是否被应用,比循环判断更简洁高效。
  • 通知函数绑定到woocommerce_before_checkout_form钩子,这个位置正好对应WooCommerce默认通知的显示区域。
  • 用wc_add_notice函数添加消息,这是WooCommerce官方推荐的方法,会自动适配默认的通知样式,确保消息正确显示。

注意事项:

  • 确认你的Stripe支付网关ID是stripe(如果你的网关ID不同,比如woocommerce_stripe,需要对应调整,但默认情况下是stripe)。
  • 你可以根据需求修改通知文本,第二个参数'notice'可以改成'success'(绿色成功样式)或'error'(红色错误样式)。
  • 代码可以添加到主题的functions.php文件,或者用自定义代码插件(比如Code Snippets)来添加,避免主题更新导致代码丢失。

备注:内容来源于stack exchange,提问作者SolaceBeforeDawn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 07:00:29