
WordPress propose des rôles par défaut : Administrateur, Éditeur, Auteur, Contributeur et AbonnéUn rôle d'utilisateur avec des permissions minimales, uniqu... More. 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.
Utilisez la fonction add_role(). Elle prend trois paramètres :
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 :
remove_role('membre_premium').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"]
WordPress permet plusieurs rôles par utilisateur. Vous avez deux options :
| Méthode | Effet | Cas 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ôles | L’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)Supposons que nous voulions faire passer un utilisateur de « AbonnéUn rôle d'utilisateur avec des permissions minimales, uniqu... More » à « Membre Premium » après sa 10ème connexion.
Logique étape par étape :
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 :
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 sauvegardeUne copie des fichiers et de la base de données de votre si... More de votre base de donnéesL'endroit où tout le contenu, les réglages et les données... More 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.
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 :
add_role() quand les utilisateurs ont besoin de multiples capacités ; set_role() pour les rôles exclusifsMaintenant, 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.