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

如何为WooCommerce活跃订阅用户提供全站商品半价优惠?

实现活跃订阅用户额外商品半价的最佳方案

核心思路

利用WooCommerce的钩子函数,在计算购物车总价前自动为活跃订阅用户的商品应用50%折扣,无需手动调用优惠券,全程自动触发。

具体实现步骤

1. 保留你的活跃订阅判断函数

你编写的has_active_subscription函数可以继续使用,它能准确识别用户是否拥有活跃订阅。

2. 添加自动折扣的钩子函数

将以下代码添加到WordPress主题的functions.php文件中,或者使用Code Snippets插件(更安全,无需修改主题文件)来添加:

// 为活跃订阅用户的购物车商品应用半价折扣
function apply_subscriber_discount( $cart ) {
    // 避免重复触发计算逻辑
    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) {
        return;
    }

    // 判断当前用户是否有活跃订阅
    if ( ! has_active_subscription() ) {
        return;
    }

    // 遍历购物车中的每个商品
    foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
        // 可选:排除订阅类型商品(如果你的订阅商品是单独的商品类型)
        // if ( $cart_item['data']->get_type() === 'subscription' ) {
        //     continue;
        // }

        // 获取商品原价
        $original_price = $cart_item['data']->get_regular_price();
        // 计算半价
        $discounted_price = $original_price * 0.5;
        // 设置折扣后的价格
        $cart_item['data']->set_price( $discounted_price );
    }
}
add_action( 'woocommerce_before_calculate_totals', 'apply_subscriber_discount' );

3. 可选:添加折扣提示(提升用户体验)

可以在购物车页面显示专属提示,让用户明确知晓自己享有的订阅福利:

// 在购物车页面显示订阅用户折扣提示
function show_subscriber_discount_notice() {
    if ( is_cart() && has_active_subscription() ) {
        wc_print_notice( '作为活跃订阅用户,你购买的所有额外商品享受半价优惠!', 'success' );
    }
}
add_action( 'woocommerce_before_cart', 'show_subscriber_discount_notice' );

关键说明

  • 自动触发:用户登录且有活跃订阅时,购物车会自动应用折扣,无需手动输入优惠券,操作更便捷。
  • 可定制排除:如果需要订阅商品本身不参与折扣,只需取消代码中排除订阅类型商品的注释,也可根据商品ID/分类来精准排除特定商品。
  • 安全建议:优先使用Code Snippets插件添加代码,避免修改主题文件导致的代码丢失风险(主题更新时会覆盖functions.php内容)。

内容的提问来源于stack exchange,提问作者Jamie Kidd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:15:23