WooCommerce Memberships check if user (with current membership plan) is able to access the contents WooCommerce Memberships check if user (with current membership plan) is able to access the contents wordpress wordpress

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";}