Home > Software design >  PHP Conditional Check for multiple WordPress Roles
PHP Conditional Check for multiple WordPress Roles

Time:06-17

I am looking for more performant code for selecting multiple WordPress roles as a check to run some code:

 if ( current_user_can( 'wholesale_customer' ) || current_user_can( 'wholesale_premium' ) || current_user_can( 'wholesale_nz') || current_user_can( 'wholesale_wa') ){
            // do something
     }

The above code works but I question is it optimal, from what I understand you can't pass multiple roles into current_user_can as an array but more so capabilities.

CodePudding user response:

You can also check with user_roles_array like this -

$user_roles = array( 'wholesale_customer', 'wholesale_premium', 'wholesale_nz', 'wholesale_wa' );
foreach( $user_roles as $role ){
    if( current_user_can( $role ) ){
        // do something
    }
}

CodePudding user response:

How about this one -

global $current_user;
$user_roles = $current_user->roles;
$compare_user_roles = array( 'wholesale_customer', 'wholesale_premium', 'wholesale_nz', 'wholesale_wa' );
foreach( $user_roles as $user_role ){
    if( in_array( $user_role, $compare_user_roles ) ){
        // echo $user_role;
    }
}
  • Related