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]
1 Commentaire
A mon tour :)
Voici la mienne :
J’ai gardé tes commentaires ;)
Le code est plus court, sans boucle ni $wpdb.
A bientôt !