Tout savoir sur WordPress
Tutoriel WordPress

Récupérer le rôle de l’auteur dans un article

Pour combler une lacune de WordPress, découvrez une fonction pratique qui va vous permettre d’afficher le rôle d’auteur dans un article.

Pour le moment, aucune fonction ne permet de récupérer le rôle d’un auteur dans la loop de WordPress. Si vous souhaitez ajouter le rôle de l’auteur sur un article ou sur une page qui liste les extraits de vos articles, la création d’une fonction s’avère donc indispensable pour avoir ce rôle.

Je vous propose l’astuce ci-dessous à placer dans le fichier functions.php pour récupérer le rôle de l’auteur d’un article.

La fonction get_the_author_role()

Pour que la fonction soit comprehensible, j’ai commenté chaque partie importante.
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]

function get_the_author_role() {

    global $post, $wpdb;
    
    // post_author retourne l'id de l'auteur
    $user = get_userdata( $post->post_author );

    // ceci retourne le rôle de l'auteur
    $capabilities = $user->{$wpdb->prefix . 'capabilities'};

    // On fait une instance de la class WP_Roles
    $wp_roles = new WP_Roles();

    // On va faire une boucle sur tous les rôles existants
    foreach ( $wp_roles->role_names as $role => $name ) {

    	// On regarde si l'un des roles correspond a celui du membre
    	// Si c'est le cas, on le retourne ^_^
    	if ( array_key_exists( $role, $capabilities ) )
                // translate_user_role va traduire le rôle en fonction de la langue de site
    		return translate_user_role( $name );
	}
}

[/pastacode]

A savoir que si vous souhaitez récupérer le slug du rôle plutôt que le label (administrator au lieu de Administrateur), il suffit de remplacer return translate_user_role( $name ); par return $role;.

Comment se servir de la fonction get_the_author_role() dans la loop WordPress ?

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]


if( have_posts() ) : while( have_posts() ) : the_post()

echo get_the_author_role();

endwhile(); endif;

[/pastacode]

La fonction the_author_role()

Pour simplifier un peu plus l’appel à la fonction get_the_author_role() et ne pas faire d’echo pour afficher le rôle de l’auteur sur l’article, je vous propose un raccourci avec la fonction the_author_role();

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]


function the_author_role() {
    echo get_the_author_role();
}

[/pastacode]

On utilise la fonction the_author_role() de la façon suivante :

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]


if( have_posts() ) : while( have_posts() ) : the_post()

the_author_role();

endwhile(); endif;

[/pastacode]

Cet article a été mis à jour il y a 4637 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

1 Commentaire

  1. A mon tour :)

    Voici la mienne :

    function get_the_author_role() {
    	global $wp_roles, $post;
    	$user = new WP_User( $post->post_author ); // post_author retourne l'id de l'auteur
    	$role = array_shift( $user->roles ); // ceci retourne le rôle de l'auteur
    	return isset($wp_roles->role_names[$role]) ? translate_user_role($wp_roles->role_names[$role] ) : ''; // translate_user_role va traduire le rôle en fonction de la langue de site
    }
    

    J’ai gardé tes commentaires ;)
    Le code est plus court, sans boucle ni $wpdb.
    A bientôt !