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';
?>