WooCommerce Memberships check if user (with current membership plan) is able to access the contents
I managed to do it with the code below, it check whether if the user (with current membership) is able to access the page:
function can_user_access_content($user_id,$post_id){ //check if there's a force public on this content if(get_post_meta($post_id,'_wc_memberships_force_public',true)=='yes') return true; $args = array( 'status' => array( 'active' )); $plans = wc_memberships_get_user_memberships( $user_id, $args ); $user_plans = array(); foreach($plans as $plan){ array_push($user_plans,$plan->plan_id); } $rules = wc_memberships()->get_rules_instance()->get_post_content_restriction_rules( $post_id ); foreach($rules as $rule){ if(in_array($rule->get_membership_plan_id(), $user_plans)){ return true; } } return false;}if(can_user_access_content(get_current_user_id(),$post->ID)){ //do something} else { //do something}
Answer provided by Paulo:WooCommerce Memberships: Conditional to check a page access
According to the documentation you can pass in a specific user id and plan name in order to check if a user is on a specific plan when viewing this page.
For example:
if (wc_memberships_is_user_active_member($user_id, 'silver_plan') { // show content} else { // show sign up form}
<?php$curr_user_id = get_current_user_id();$memberships = array( 'plan-slug-1', 'plan-slug-2', 'plan-slug-3' );if ( wc_memberships_get_user_memberships( $curr_user_id, $memberships ) ) { echo "You are a member so you can view this content";} else { echo "Become a member to view this content";}