WooCommerce会员资格检查特定用户是否能够访问特定内容

问题描述

WooCommerce成员资格有一些条件,但我无法将它们组合起来以专门测试特定成员是否有权访问特定内容

 $post_id = get_the_ID(); // this post is available to access level 'insights' but *not* available to a member with access level 'resources'

 // if post content is restricted
 if ( wc_memberships_is_post_content_restricted($post_id) ) {
 // returns true for *any* restricted content (whether restricted for this member or not)

     // check if user has membership
     $user_id = get_current_user_id(); // this member has access level 'resources' but not 'insights'
     if ( wc_memberships_is_user_active_member( $user_id,'resources' ) ){
     /// will return *true* dependent on user but *not* dependent on content
         echo "You";
     } else {
         echo 'Not you ';
     }
 }

始终返回“您”

那么我该如何检查用户是否具有内容的访问级别?

简而言之,我想我需要找出对帖子内容有哪些限制,但并没有似乎作为条件的条件(这很奇怪)

解决方法

在房子周围转了几圈之后,在天空边缘的帮助下

function wc_memberships_user_has_access($post_id) {

  if (wc_memberships_is_post_content_restricted() && ! current_user_can( 'wc_memberships_view_restricted_post_content',$post_id ))  {
    return false;
  } else {
    return true;
  }

}

只需将帖子ID传递给此函数,并根据当前用户对当前帖子的访问权限返回一个布尔值。