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

如何在WooCommerce Subscription中判断用户订阅是否已激活且已付款

WooCommerce Subscriptions 有效订阅用户判断实现

你原来的示例代码存在两处明显问题:一是使用赋值运算符=而非比较运算符做状态判断,二是没有实际获取当前用户的订阅数据做校验,正确实现方式如下:

实现代码

// 先判断用户是否已登录
if ( is_user_logged_in() ) {
    // 获取当前用户的所有订阅记录
    $user_subscriptions = wcs_get_users_subscriptions( get_current_user_id() );
    $has_active_sub = false;
    // 遍历订阅判断是否存在激活且已付款的订阅
    foreach ( $user_subscriptions as $subscription ) {
        // WooCommerce Subscriptions中active状态默认对应已付款且生效的订阅
        if ( $subscription->get_status() === 'active' ) {
            $has_active_sub = true;
            break;
        }
    }
    if ( $has_active_sub ) {
        echo "Hello";
    } else {
        echo "Goodbye";
    }
} else {
    echo "Goodbye";
}

代码说明

  • 依赖WooCommerce Subscriptions官方内置函数wcs_get_users_subscriptions()获取用户订阅数据,兼容性最优
  • 订阅状态active是插件预置的官方状态,本身就对应「已付款、处于生效周期内」的订阅,无需额外追加付款状态判断
  • 如果需要限定判断指定商品的订阅,可以在遍历逻辑中追加产品ID校验即可,示例:
// 假设要判断的订阅商品ID为123
if ( $subscription->get_status() === 'active' && in_array( 123, wp_list_pluck( $subscription->get_items(), 'product_id' ) ) ) {
    $has_active_sub = true;
    break;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:06:02