Is there a conditional tag that will allow me to display certain content only if the user is NOT a subscriber?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
<?php
$current_user = wp_get_current_user();
if ( ! user_can( $current_user, "subscriber" ) ) // Check user object has not got subscriber role
echo 'User is a not Subscriber';
else
echo 'User is a Subscriber';
?>
Method 2
An even more simple way, than @Brady showed you is the using current_user_can:
if ( current_user_can( 'subscriber' ) )
echo "Hi, dear subscriber! Glad seeing you again!";
MU
There’s also an equivalent for MU installations, named current_user_can_for_blog:
global $blog_id;
if ( current_user_can_for_blog( $blog_id, 'subscriber' ) )
echo "Hi, dear subscriber! Glad seeing you again on this blog!";
Behind the curtain
When looking at the source of the functions for single or MU installations, then you’ll see, that both basically rely on wp_get_current_user() and then do a check for has_cap.
Now if you want to see, where the cap comes from, then WP_User class/object comes into the game.
Other members of this set
Then there’s also author_can( $GLOBALS['post'], 'capability' );. All those functions are inside ~/wp-includes/capabilities right below each other.
When to use what?
Now, where’s the difference between current_user_can(_FOR_BLOG) and user_can?
user_can()is the newer one (since 3.1), but needs the user as object. So you can use it in cases, where you don’t want to target the current user, but some users.current_user_can_*()is obvious.author_can()allows you to check capabilities against a post object. This object is only available for posts, that are already in the DB. So it’s mainly for allowing/denying the access to specific post features.
Method 3
Is this what you mean?
global $userdata;
get_currentuserinfo();
if ( $userdata->user_level != 0 )//check user level by level ID
{
echo 'User is a not Subscriber';
}
else
{
echo 'User is a Subscriber';
}
More details on the ID’s for different levels: http://codex.wordpress.org/Roles_and_Capabilities#User_Levels
There is also the current_user_can() function, which lets you denote specific capabilities for more flexibility.
http://codex.wordpress.org/Function_Reference/current_user_can
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0