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

如何修改Enhancer for WooCommerce Subscription试用限制逻辑,校验全量用户订阅产品

实现方案

可以通过修改代码中的产品ID校验、缓存键逻辑实现全量产品的试用资格校验,具体修改点如下:

  • 修改缓存键逻辑:原缓存按「用户ID+当前产品ID」存储校验结果,因为现在是全局校验,无需区分产品,直接按用户ID存储全局试用状态即可
  • 修改订阅校验规则:删除原有判断订阅是否包含当前产品的逻辑,只要用户名下任意订阅使用过试用资格,就直接返回0(不提供新试用)
  • 可选调整:如果你希望所有产品都强制走全局试用限制,可直接删除原代码中两个产品级配置的判断分支,无需每个产品单独开启试用限制开关

修改后完整代码

public static function limit_trial( $trial_length, $product ) {
    if ( $trial_length <= 0 ) {
        return $trial_length ;
    }

    $user_id = get_current_user_id() ;

    if ( ! $user_id ) {
        return $trial_length ;
    }

    // 缓存键改为全局用户维度,不再区分产品ID
    if ( isset( self::$onetime_trial_cache[ $user_id ]['global_trial_used'] ) ) {
        return self::$onetime_trial_cache[ $user_id ]['global_trial_used'] ? 0 : $trial_length ;
    }

    if ( $product->is_type( 'variation' ) ) {
        $parent_product = wc_get_product( $product->get_parent_id() ) ;
    } else {
        $parent_product = $product ;
    }

    // 若不需要保留原产品级配置开关,可删除以下两个if判断分支
    if ( 'no' !== self::get_product_limitation( $parent_product ) ) {
        self::$onetime_trial_cache[ $user_id ]['global_trial_used'] = false ;
        return $trial_length ;
    }

    if ( 'yes' !== get_post_meta( $parent_product->get_id(), '_enr_limit_trial_to_one', true ) ) {
        self::$onetime_trial_cache[ $user_id ]['global_trial_used'] = false ;
        return $trial_length ;
    }

    $subscriptions = wcs_get_users_subscriptions( $user_id ) ;

    foreach ( $subscriptions as $subscription ) {
        // 删除产品ID匹配逻辑,只要任意订阅有试用记录就触发限制
        if ( '' !== $subscription->get_trial_period() || 0 !== $subscription->get_time( 'trial_end' ) ) {
            self::$onetime_trial_cache[ $user_id ]['global_trial_used'] = true ;
            return 0 ;
        }
    }

    self::$onetime_trial_cache[ $user_id ]['global_trial_used'] = false ;
    return $trial_length ;
}

注意事项

  • 修改前请备份原有代码,建议先在测试环境验证逻辑符合预期后再上线
  • 若你后续需要给特定产品开放例外的试用权限,可在校验逻辑中增加产品ID白名单判断

内容的提问来源于stack exchange,提问作者Andreas EBM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:24:10