web-dev-qa-db-fra.com

Comment afficher le rôle d'utilisateur

Comment afficher le rôle de l'utilisateur sur la page de l'auteur.

J'ai créé mon propre rôle (groupe) et je souhaite donc afficher le rôle d'utilisateur sous la liste des articles et des auteurs.

J'ai essayé ce code, mais je n'ai pas utilisé l'appelant current_user ni le rôle d'utilisateur actuel dans le profil de tous les auteurs.

<?php 
    $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>';
    }
?>

Comment puis-je modifier ce code pour afficher le rôle réel de l'utilisateur et non le rôle de l'utilisateur actuel?.

1
pixelngrain

Changement:

$user_roles = $current_user->roles;

avec

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

et le $ user_id devrait correspondre à l'ID utilisateur actuel du rôle que vous essayez d'obtenir.

Mettre à jour,

Désolé, je viens de lire la partie modèle de l'auteur, alors essayez ceci:

//first get the current author whos page you are viewing
if(isset($_GET['author_name']))
        $curauth = get_user_by('slug', $author_name);
else
        $curauth = get_userdata(intval($author));
//then get the user object with roles
$user = new WP_User( $$curauth->ID );
$user_roles = $user->roles; 
....
2
Bainternet

Je suppose que vous essayez de montrer le rôle de l'auteur du message et non de l'utilisateur actuel qui consulte la page de l'auteur.

en supposant que vous êtes dans la boucle, procédez comme suit:

//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;
    }
}

ou, si vous n'attribuez qu'un seul rôle à chaque utilisateur/auteur, vous pouvez alors remplacer le bloc foreach au lieu de cela:

echo $user_obj->roles[0];
2
WP Themes