Récupérer la liste des rôles sur WordPress
Pour diverses raisons, vous aurez certainement besoin d’une fonction qui retourne la liste des rôles présent sur votre site Internet WordPress.
Par défaut, WordPress ne propose pas de fonction qui permet de récupérer la liste des rôles présent sur notre site Internet.
Pour palier ce problème, je vous propose de créer une fonction qui va retourner un tableau contenant un clé le slug du rôle et en valeur la traduction du rôle.
Pour commencer, nous nommons notre fonction get_roles()
:
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
function get_roles() {
}
[/pastacode]
Ensuite, nous allons récupérer la liste des rôles (non-traduit !) à l’aide d’une instance de l’objet WP_Roles
et de la méthode get_names
qui retournera un tableau de tout les rôles :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
function get_roles() {
$wp_roles = new WP_Roles();
$roles = $wp_roles->get_names();
return $roles;
}
[/pastacode]
A partir de ce moment, la fonction nous retourne donc un tableau associatif des rôles non-traduits comme ci-dessous :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
Array
(
[administrator] => Administrator
[editor] => Editor
[author] => Author
[contributor] => Contributor
[subscriber] => Subscriber
)
[/pastacode]
Pour terminer ce tutoriel, il reste plus qu’à traduire les rôles en fonction de la langue de votre site. Pour traduire automatiquement les rôles pour les différentes langues, nous utilisons la fonction translate_user_role()
.
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
function get_roles() {
$wp_roles = new WP_Roles();
$roles = $wp_roles->get_names();
$roles = array_map( 'translate_user_role', $roles );
return $roles;
}
[/pastacode]
La fonction get_roles()
retourne le tableau associatif suivant :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
Array
(
[administrator] => Administrateur
[editor] => Editeur
[author] => Auteur
[contributor] => Contributeur
[subscriber] => Abonné
)
[/pastacode]
3 Commentaires
Hello
Tu peux remplacer :
foreach( $roles as $role => $name ) {
$roles[$role] = translate_user_role( $name );
}
par ça :
$roles = array_map( ‘translate_user_role’, $roles );
Ce array_map est fait pour ça ;)
Ah oui pas faux, je mets l’article à jour.
Une fois de plus, merci Julio :)
Bonjour Jonathan,
Merci pour l’article , j’ai une petite demande SVP.
j’ai une page pour créer des utilisateurs a part la page wordpress classic (wp-login) comment lors de la création de l’utilisateur je peux assigner un rôle a l’utilisateur lors de sa création.
j’ai déjà essayer sa : .
Merci,