Wordpress - Find out if logged in user is not subscriber
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.
<?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';
?>