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

如何获取并展示WooCommerce指定用户的订阅结束日期?

获取WooCommerce用户订阅结束日期的正确方法

前提条件

  • 确保已激活WooCommerce Subscriptions插件,wcs_get_users_subscriptions()和WC_Subscription类都是该插件提供的核心功能。

正确代码示例

直接通过wcs_get_users_subscriptions()获取用户的订阅对象,再调用对象方法获取结束日期:

// 替换为目标用户ID
$user_id = 123;

// 获取用户所有订阅
$subscriptions = wcs_get_users_subscriptions( $user_id );

// 检查是否存在订阅
if ( ! empty( $subscriptions ) ) {
    // 遍历每个订阅(用户可能有多个订阅)
    foreach ( $subscriptions as $subscription ) {
        // 确认当前对象是WC_Subscription实例
        if ( $subscription instanceof WC_Subscription ) {
            // 获取订阅结束日期(UTC时间字符串)
            $end_date = $subscription->get_date( 'end' );
            
            if ( $end_date ) {
                // 格式化为站点本地化日期(适配时区)
                $formatted_date = date_i18n( get_option( 'date_format' ), strtotime( $end_date ) );
                echo "订阅ID {$subscription->get_id()} 的结束日期:{$formatted_date}<br>";
            } else {
                // 无结束日期通常意味着是永久订阅或自动续费的活跃订阅
                echo "订阅ID {$subscription->get_id()}:无结束日期(永久/自动续费)<br>";
            }
        }
    }
} else {
    echo "该用户暂无有效订阅";
}

常见错误原因及解决

  • 函数/类不存在:未激活WooCommerce Subscriptions插件,先在后台启用该插件。
  • 直接实例化WC_Subscription报错:不要手动new WC_Subscription(),应该通过wcs_get_users_subscriptions()或wcs_get_subscription($subscription_id)获取已初始化的对象,手动实例化需要传入正确的订阅订单ID,容易出错。
  • 返回空订阅数组:用户ID无效,或该用户确实没有任何订阅,先验证用户ID是否正确。
  • 日期显示异常:未使用date_i18n()本地化,直接用date()会忽略站点时区设置,导致日期显示偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:42:11