Comment créer et modifier les rôles utilisateur WordPress par programmation

WordPress propose des rôles par défaut : Administrateur, Éditeur, Auteur, Contributeur et Abonné. Chacun possède son propre ensemble de capacités.

Mais parfois, vous avez besoin de quelque chose de personnalisé. Un rôle « Membre Premium ». Un rôle « Étudiant ». Un « Modérateur » avec des permissions très spécifiques.

Bonne nouvelle : vous pouvez créer, attribuer et modifier en masse des rôles personnalisés par programmation — sans plugin.

Ce guide vous montre comment.

Table des matières

  1. Créer un rôle personnalisé
  2. Récupérer le rôle actuel d’un utilisateur
  3. Ajouter vs modifier un rôle
  4. Attribuer un rôle par programmation (exemple concret)
  5. Modifier des rôles en masse

1. Créer un rôle personnalisé

Utilisez la fonction add_role(). Elle prend trois paramètres :

  • Nom (identifiant unique)
  • Nom affiché (lisible par un humain)
  • Capacités (tableau de permissions)

php

function wp_expert_creer_role() {
    add_role(
        'membre_premium',           // nom unique
        'Membre Premium',           // nom affiché
        array(
            'read'         => true,
            'edit_posts'   => false,
            'delete_posts' => false
        )
    );
}
add_action('admin_init', 'wp_expert_creer_role');

Points importants :

  • Une fois créé, le rôle est stocké dans la base de données — il persiste même si vous supprimez le code.
  • Pour supprimer un rôle plus tard, utilisez remove_role('membre_premium').
  • Exécutez le code de création une seule fois (par exemple, lors de l’activation du thème, ou en visitant l’admin après avoir ajouté le code, puis supprimez-le).

2. Récupérer le rôle actuel d’un utilisateur

Les rôles utilisateur sont stockés dans les métadonnées utilisateur. Pour les récupérer :

php

$user_meta = get_userdata($user_id);
$user_roles = $user_meta->roles; // retourne un tableau

Exemple de résultat : ["abonne", "membre_premium"]

3. Ajouter vs modifier un rôle

WordPress permet plusieurs rôles par utilisateur. Vous avez deux options :

MéthodeEffetCas d’usage
add_role()Ajoute un rôle (conserve les existants)L’utilisateur a besoin de permissions supplémentaires
set_role()Remplace tous les rôlesL’utilisateur n’a qu’un seul rôle exclusif

Exemple :

php

$user = new WP_User(123); // ID utilisateur

// Rôles actuels : ["abonne"]
$user->add_role('membre_premium');
// Maintenant : ["abonne", "membre_premium"]

$user->set_role('editeur');
// Maintenant : ["editeur"] (les rôles précédents sont supprimés)

Quand utiliser quoi :

  • set_role → Les utilisateurs ont des rôles exclusifs et non chevauchants (ex : membre OU gestionnaire)
  • add_role → Les utilisateurs ont besoin de capacités de plusieurs rôles (ex : éditeur + membre)

4. Attribuer un rôle par programmation (exemple concret)

Supposons que nous voulions faire passer un utilisateur de « Abonné » à « Membre Premium » après sa 10ème connexion.

Logique étape par étape :

  1. Compter les connexions dans une métadonnée utilisateur.
  2. À chaque connexion, vérifier si le compteur == 10 ET si l’utilisateur a le rôle « abonne ».
  3. Si oui, changer le rôle en « membre_premium ».

Le code :

php

function wp_expert_upgrader_connexion($user_login, $user) {
    // Récupérer le compteur de connexions actuel
    $connexions = get_user_meta($user->ID, 'compteur_connexions', true);
    
    if (!empty($connexions)) {
        $connexions++;
        
        // Vérifier la condition
        if ($connexions == 10 && in_array('abonne', $user->roles)) {
            $user->set_role('membre_premium');
        }
        
        update_user_meta($user->ID, 'compteur_connexions', $connexions);
    } else {
        // Première connexion
        update_user_meta($user->ID, 'compteur_connexions', 1);
    }
}
add_action('wp_login', 'wp_expert_upgrader_connexion', 10, 2);

Autres déclencheurs possibles :

  • Après un achat
  • Après un certain nombre de commentaires
  • À une date spécifique (avec WP Cron)

5. Modifier des rôles en masse

Pour changer tous les utilisateurs d’un rôle à un autre :

Méthode rapide (SQL) :

sql

UPDATE wp_usermeta 
SET meta_value = 'a:1:{i:0;s:15:"membre_premium";}' 
WHERE meta_key = 'wp_capabilities' 
AND meta_value LIKE '%abonne%';

Faites une sauvegarde de votre base de données avant d’exécuter du SQL brut.

Meilleure méthode (par programmation) :

php

$users = get_users(array('role' => 'abonne'));
foreach ($users as $user) {
    $user->set_role('membre_premium');
}

Pour des opérations avancées (filtrage par critères, exportation), envisagez un plugin comme Users Insights.

Réflexions finales

Les rôles utilisateur personnalisés vous donnent un contrôle précis sur ce que chaque utilisateur peut faire sur votre site. Pas besoin de plugin pour la création et l’attribution de base — juste quelques lignes de code.

Bonnes pratiques :

  • Créez les rôles une seule fois (lors de l’activation du thème/plugin, pas à chaque chargement de page)
  • Testez d’abord sur un site de staging
  • Faites toujours une sauvegarde de votre base de données avant les opérations en masse
  • Utilisez add_role() quand les utilisateurs ont besoin de multiples capacités ; set_role() pour les rôles exclusifs

Maintenant, allez construire ce système d’adhésion personnalisé, cette zone de contenu premium ou ce flux de modération que vous avez en tête.

Ce billet vous a été utile?
Offrez-nous un café!
Tags: