WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How to display user role on author page.

I have created my own role (group) so I want to display the user role on below the post and on author list.

I have tried this code but not working as its calling current_user and its showing current user role in all authors profile

    $user_roles = $current_user->roles;
    $user_role = array_shift($user_roles);

    if ($user_role == 'administrator') {
        echo 'Administrator';
    } elseif ($user_role == 'editor') {
        echo 'Editor';
    } elseif ($user_role == 'author') {
        echo 'Author';
    } elseif ($user_role == 'contributor') {
        echo 'Contributor';
    } elseif ($user_role == 'subscriber') {
        echo 'Subscriber';
    } else {
        echo '<strong>' . $user_role . '</strong>';

How can I alter this code to display user actual role and not the current user role.

share|improve this question
up vote 2 down vote accepted


$user_roles = $current_user->roles;


$user = new WP_User( $user_id );
$user_roles = $user->roles;

and the $user_id should e the actual user id who's role you are trying to get.


Sorry i just read the author template part so try this:

//first get the current author whos page you are viewing
        $curauth = get_user_by('slug', $author_name);
        $curauth = get_userdata(intval($author));
//then get the user object with roles
$user = new WP_User( $$curauth->ID );
$user_roles = $user->roles; 
share|improve this answer
its giving blank output. No error or not text – pixelngrain May 27 '12 at 14:18
try var_dump($user); to see what your are getting – Bainternet May 27 '12 at 14:19
getting this output object(WP_User)#349 (7) { ["data"]=> NULL ["ID"]=> int(0) ["caps"]=> array(0) { } ["cap_key"]=> NULL ["roles"]=> array(0) { } ["allcaps"]=> array(0) { } ["filter"]=> NULL } I am using name of the role if you see in my first code not any id so can that cause the issue? – pixelngrain May 27 '12 at 14:22
@pixelngrain i updated my answer – Bainternet May 27 '12 at 14:31

I assume you are trying to show the role of the post's Author and not the current user viewing the author page.

assuming you are inside the loop, do the following:

//get the post author's ID
$user_id = get_the_author_meta( 'ID' ); //assume we are in The Loop

$user_obj = get_userdata( $user_id );

if( !empty( $user_obj->roles ) ){
    foreach( $user_obj->roles as $role ){
        echo $role;

or, if you only assign one role to each user/author, then you can do the following instead replacing the whole foreach block:

echo $user_obj->roles[0];
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.