Tout savoir sur WordPress
Tutoriel WordPress

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() :

function get_roles() {

}

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 :
function get_roles() {

    $wp_roles = new WP_Roles();
    $roles = $wp_roles->get_names();

    return $roles;
}

A partir de ce moment, la fonction nous retourne donc un tableau associatif des rôles non-traduits comme ci-dessous :

Array
(
    [administrator] => Administrator
    [editor] => Editor
    [author] => Author
    [contributor] => Contributor
    [subscriber] => Subscriber
)

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().

function get_roles() {

    $wp_roles = new WP_Roles();
    $roles = $wp_roles->get_names();
    $roles = array_map( 'translate_user_role', $roles );

    return $roles;
}

La fonction get_roles() retourne le tableau associatif suivant :
Array
(
    [administrator] => Administrateur
    [editor] => Editeur
    [author] => Auteur
    [contributor] => Contributeur
    [subscriber] => Abonné
)

Cet article a été mis à jour il y a 2627 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.

3 Commentaires

  1. 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 ;)

  2. 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,

Curabitur eleifend dictum id fringilla lectus eget Praesent tempus dolor. neque. leo.