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

如何获取MemberPress中当前用户的subscription ID

MemberPress 获取当前用户关联订阅ID的实现方案

MemberPress 内置了MeprSubscription模型处理订阅数据,不需要手写原生SQL查询,可同时兼容单订阅、多订阅场景,兼容MemberPress 1.7及以上正式版本。

通用获取逻辑(覆盖单/多订阅场景)

直接调用内置模型方法拉取当前用户的订阅列表,再提取ID即可,支持按需过滤订阅状态:

// 未登录用户直接返回空结果
if ( ! is_user_logged_in() ) {
    return [];
}

$current_user_id = get_current_user_id();
/**
 * 方法参数说明
 * 第一个参数:关联的用户ID
 * 第二个参数:布尔值,传true仅返回状态为「激活中」的订阅;传false返回该用户所有状态的订阅(含过期、已取消、待支付、暂停等)
 */
$user_subscriptions = MeprSubscription::get_all_by_user( $current_user_id, true );

$subscription_ids = [];
if ( ! empty( $user_subscriptions ) ) {
    foreach ( $user_subscriptions as $subscription ) {
        // 遍历取出每个订阅实例的ID,存入结果数组
        $subscription_ids[] = $subscription->id;
    }
}

// 输出结果说明:
// 单订阅场景:$subscription_ids 为长度等于1的索引数组,元素值为对应订阅ID
// 多订阅场景:$subscription_ids 为长度大于1的索引数组,包含该用户所有符合过滤条件的订阅ID

单订阅场景的快捷获取

如果业务仅需要取单个订阅ID(比如最新开通的订阅、最早开通的订阅),可以在拉取到订阅列表后直接排序取值:

if ( ! empty( $user_subscriptions ) ) {
    // 按订阅创建时间倒序排列,最新创建的订阅排在数组首位
    usort( $user_subscriptions, function( $prev, $next ) {
        return strtotime( $next->created_at ) - strtotime( $prev->created_at );
    });

    $latest_subscription_id = $user_subscriptions[0]->id; // 最新创建的订阅ID
    $oldest_subscription_id = end( $user_subscriptions )->id; // 最早创建的订阅ID
}

开发注意事项

  • 禁止直接通过查询WordPress posts表提取订阅数据,MemberPress部分版本对订阅的元数据存储逻辑有调整,使用内置模型方法可避免版本兼容问题
  • 如果需要筛选特定会员等级对应的订阅,可在遍历ID时增加判断:$subscription->product_id == 目标会员等级ID,匹配成功再存入结果数组
  • 调试时如果返回空数组,可先到WordPress后台「MemberPress > 订阅」列表核对当前登录用户是否存在符合过滤条件的订阅记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 13:42:30