如何检测用户是否已经订阅了 Memberpress 产品

How can I detect if user has subscribed Memberpress product already

如何检测用户是否已经购买了会员产品。

我正在搜索这样的内容:

if(have_subscription){ 
   //code to add button
}else{
   // code to add something else
}

使用 MemberPress 的内置功能应该非常简单:

if(current_user_can('memberpress_authorized')) {
  // Do authorized only stuff here
}
else {
  // Do unauthorized stuff here
}

MemberPress 还为每个 MemberPress 会员添加了功能,因此您也可以这样做:

if(current_user_can('memberpress_product_authorized_123')) {
  // Do authorized only stuff here
}
else {
  // Do unauthorized stuff here
}

在第二个示例中,数字 123 是 MemberPress 会员的 ID。

2015 年的答案对我不起作用,但却是热门搜索结果。我想我以后应该在这里分享我的搜索结果给其他人。

此外,我认为“product_authorized”功能仅检查是否进行了购买,而不是验证到期日期。

所以这里是 MemberPress 如何确定活动、非活动或 none:

$mepr_user = new MeprUser( $user_id );

if( $mepr_user->is_active() ) {
    // Active
}else if($mepr_user->has_expired()) {
    // Expired
}else {
    // Never a member
}

has_expired() 可以 return 为真,即使用户在单独的交易中处于活动状态,所以不要单独依赖它。

如果您需要检查特定会员资格,您可以使用以下方法:

$user_id = 123;
$membership_id = 5000;

$mepr_user = new MeprUser( $user_id );

$mepr_user->is_already_subscribed_to( $membership_id ); // true or false

// OR

$mepr_user->is_active_on_membership( $membership_id ); // true or false

is_already_subscribed_to() 只接受一个产品 ID

is_active_on_membership() 接受以下任何一项:产品 ID、MeprProduct、MeprTransaction 或 MeprSubscription

您还可以通过以下方式获取用户的所有有效订阅:

$mepr_user->active_product_subscriptions( 'ids' ); // return array of ids

打开您的 WordPress 网站并:

  • Select Plugins > Add New
  • 点击Upload Plugin > Choose file
  • Select 来自您已保存文件的 MemberPress 插件
  • 点击Install Plugin > Activate

您现在会发现 MemberPress 已添加到您的 WordPress 仪表板。
这应该有所帮助。