The question:
Is there a conditional tag that will allow me to display certain content only if the user is NOT a subscriber?
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
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