Un sage nomé Spiderman a dit : « À grand pouvoir, grande responsabilité ». Dans WordPress, cela s’illustre sous la forme des rôles utilisateurs qui permettent différents droits d’accès à des parties d’un site WordPress.

Le principe du moindre privilège en TI est bon à suivre. Seuls les utilisateurs les plus dignes de confiance devraient avoir le plus grand accès, de sorte que l’intégrité et la sécurité d’un site ou d’un réseau de sites puissent être préservées.

Quels sont les rôles des utilisateurs de WordPress ?

WordPress propose six rôles utilisateur intégrés, qui sont les suivants :

  • Super Admin : En mode WP-multisite uniquement ; possède des capacités d’administration réseau.
  • Administrateur : le rôle de premier niveau pour un site unique ; peut effectuer toutes les actions, sauf lorsque le multisite est activé.
  • Éditeur : peut créer, modifier, publier et supprimer des articles et des pages, modérer les commentaires et télécharger des fichiers.
  • Auteur : peut publier ses propres articles, et télécharger des fichiers.
  • Contributeur : peut rédiger et modifier ses propres articles.
  • Abonné : peut se connecter et modifier son profil uniquement.

Les rôles sont associés aux capacités. Plus un rôle utilisateur possède de capacités, plus il peut effectuer d’actions.

Imaginez une école. Un concierge aura les clés pour accéder aux différentes salles de l’école. Un enseignant peut accéder à la salle du personnel et aux salles de classe, mais n’aura que les clés de sa propre salle de classe. Un étudiant peut visiter la plupart des salles de classe, mais n’aura pas de clés du tout.

Dans une installation WordPress standard, le rôle Administrateur a le plus de capacités pour un site unique ; pour un multisite, c’est le Super Admin.

Le Codex WordPress dispose d’une liste complète des capacités associées aux rôles utilisateur.

Par exemple, les Contributeurs ont les capacités suivantes :

  • edit_posts : créer et modifier (mais pas publier) leurs propres articles
  • delete_posts : supprimer leurs propres articles
  • read : accéder à leur propre profil

Plugins et rôles utilisateur

Les rôles utilisateur personnalisés peuvent être créés avec des plugins. Par exemple, WooCommerce ajoute deux rôles supplémentaires :

  • Responsable de boutique : capacités de gestion de boutique (peut afficher/modifier toutes les options dans les menus WooCommerce et Produits). C’est l’équivalent du rôle Éditeur de WordPress.
  • Client : peut afficher les commandes, l’historique des commandes et afficher/modifier son compte.

Un Administrateur ou un Super Admin peut ajouter un nouvel utilisateur et attribuer le rôle Responsable de boutique. Un rôle Client est créé lorsque quelqu’un s’inscrit pour acheter sur une boutique en ligne.

Les rôles de WooCommerce sont ajoutés à la liste déroulante des rôles de WordPress.

bbPress ajoute les cinq autres rôles suivants, dans l’ordre de privilège décroissant :

  • Keymaster
  • Modérateur
  • Participant
  • Spectateur
  • Utilisateur bloqué

Contrairement aux rôles de WooCommerce, les rôles de bbPress sont séparés du système de rôles utilisateur de WordPress et n’apparaissent pas dans la liste déroulante standard des rôles.

Le rôle de Participant est attribué aux utilisateurs participant à un forum. Les Administrateurs peuvent également assigner à un utilisateur un rôle de Forum en modifiant son profil.

Rôles utilisateur personnalisés

La plupart du temps, les rôles utilisateur prédéfinis seront suffisants, mais il y a quelques cas où vous pourriez avoir besoin d’une implémentation plus personnalisée. Pour revenir à l’analogie avec l’école, il pourrait y avoir un concierge en chef qui possède des clés pour certaines classes que les autres concierges n’ont pas.

C’est là qu’intervient le plugin User Role Editor. Il permet une gestion plus précise des capacités des rôles. Vous pouvez responsabiliser vos utilisateurs, mais gardez-les sous contrôle.

Avec le User Role Editor pluging , vous pouvez :

  1. Ajouter vos propres rôles et définir leurs capacités
  2. Renommer des rôles
  3. Ajouter des capacités aux rôles
  4. Supprimer des rôles
  5. Créer vos propres capacités

Vous pouvez également modifier les rôles et les capacités des utilisateurs individuels.

Vous serez peut-être ravi d’apprendre que le plugin User Role Editor est conforme à GDPR.

Guide d’utilisation rapide du plugin User Role Editor

Les paramètres du plugin se trouvent dans Paramètres > User Role Editor, où vous pouvez modifier quelques paramètres et réinitialiser tous les rôles à leurs valeurs par défaut. Un grand message d’avertissement s’affiche, précisant qu’une réinitialisation entraînera la perte de toutes les modifications effectuées antérieurement.

Allez dans Utilisateurs > User Role Editor pour modifier les rôles.

Afficher les capacités sous une forme humainement lisible les rend un peu plus faciles à lire.

Attribuée montre uniquement les capacités déjà attribuées à un rôle.

Le filtre Rapide est pratique si vous connaissez le nom d’une capacité que vous souhaitez modifier, mais que vous ne pouvez pas la repérer dans la liste. Il surligne le nom en vert.

User Role Editor affichant les capacités attribuées aux Éditeurs, sous une forme humainement lisible

Changer de rôle utilisateur lors du test de modifications

Vous trouverez le plugin User Switching d’une grande économie de temps. Il vous permet de passer d’un utilisateur à l’autre en un seul clic. Cela vous évite de vous déconnecter et de vous reconnecter en tant que nouvel utilisateur.

Le seul rôle que j’ai trouvé problématique en utilisant cette méthode était le rôle Abonné. Il n’y avait pas de barre d’administration affichée sur mon installation pour un abonné, donc je ne pouvais pas facilement revenir au rôle Administrateur sans me déconnecter et me reconnecter.

Assurez-vous de bien tester toutes les modifications de capacités : vous ne voulez pas que vos utilisateurs puissent accéder à un endroit non autorisé !

Désolé, vous n’êtes pas autorisé à accéder à cette page.

Modifier les capacités des rôles par défaut

Collaborateurs : téléchargement des médias

Sur un blog multi-auteurs tel que le blog de WPMU DEV, les articles sont envoyés pour modération avant leur publication. Le rôle correspondant est celui du Contributeur, mais ce rôle ne permet pas aux rédacteurs de télécharger des images (une tâche plutôt importante !)

Vue Contributeurs de l’éditeur de l’article : le bouton Ajouter un média est absent

La capacité d’ajouter est nommée upload_files, qui se trouve dans la section General Core.

La case upload_files doit être cochée

Ceci permet à l’utilisateur d’ajouter des médias dans les articles. Les utilisateurs peuvent voir d’autres boutons à côté de Ajouter un média. Cela dépend des plugins que vous avez installés.

Les Contributeurs ayant l’autorisation de télécharger des médias peuvent voir et utiliser tous les fichiers de la Médiathèque, contrairement aux articles où ils ne peuvent qu’afficher les leurs

Un Contributeur ayant l’autorisation de télécharger des fichiers peut utiliser le bouton Ajouter un média pour ajouter des images.

Éditeurs : gestion des widgets et des menus

Les Éditeurs ne peuvent pas accéder aux options du menu Apparence, ce qui signifie qu’ils ne peuvent pas gérer les widgets ou les menus. Il y a des moments où ce serait utile.

L’option la plus simple consiste à modifier les capacités du rôle Éditeur. La capacité pertinente se trouve dans le groupe Thèmes, edit_theme_options.

Cela permet d’afficher la plupart des options du sous-menu Apparence.

Un Éditeur modifié ne peut pas modifier le thème, mais peut le personnaliser

Bien que l’utilisateur ne puisse pas modifier le thème, ou le code PHP, il peut le personnaliser et apporter d’autres modifications. Le problème est que la capacité edit_theme_options combine quelques autorisations différentes. Peut-on faire quelque chose pour ça ?

Une possibilité est de supprimer les éléments et les options du menu auxquels nous ne souhaitons pas que les Éditeurs aient accès. Pour le thème Storefront, nous avons besoin de deux fonctions pour le faire, que nous pouvons ajouter à un thème enfant.

<?php

// Add this code to the end of a child theme’s functions.php
// Hide Appearance menu options – Themes and Customize

function hide_appearance_menu_options() {
$user = wp_get_current_user();
if ( in_array(‘editor’, (array) $user->roles)) {

// Hide theme selection page
remove_submenu_page( ‘themes.php’, ‘themes.php’ );

// Hide customize page

global $submenu;
unset($submenu[‘themes.php’][6]);

}

}

add_action(‘admin_head’, ‘hide_appearance_menu_options’);

// Remove custom backgound and custom header menus and sub-menus for editor role (where supported by the theme)

function remove_background_header_options(){

$user = wp_get_current_user();

if ( in_array(‘editor’, (array) $user->roles)) {

remove_theme_support(‘custom-header’);

remove_theme_support(‘custom-background’);

}

}

add_action( ‘after_setup_theme’,’remove_background_header_options’, 100 );

Voilà le résultat :

Un rôle Éditeur personnalisé voyant uniquement les Widgets et les Menus dans la section Apparence

Notez que ce n’est pas complètement infaillible. Les options du menu ne seront pas affichées, mais les pages existent toujours. Un Éditeur astucieux pourrait encore les voir et faire des bêtises en saisissant directement les URL.

Éditeurs : visualisation et édition des Utilisateurs

Seuls les Administrateurs ou les Super Admin peuvent voir le menu Utilisateurs. Imaginez un grand site multi-utilisateur utilisant BuddyPress ou bbPress. Il y aura un grand nombre d’utilisateurs, mais peu d’administrateurs pour les gérer.

Pour contourner ce problème, vous pouvez ajouter deux capacités pour les Éditeurs : list_users et edit_users.

Cela permet à vos Éditeurs de voir la liste des utilisateurs, de modifier leurs profils et de changer leur rôle. Un Éditeur ne peut pas promouvoir un utilisateur au-dessus du niveau Éditeur.

Si vous utilisez la fonction Changement d’utilisateur, votre Éditeur dispose également de l’option Passer à, mais il/elle ne pourra pas passer à un compte Administrateur ou Super Admin.

Le rôle Administrateur est absent de la vue Utilisateurs de cet Éditeur personnalisé.

Si vous faites vraiment confiance à vos Éditeurs, vous pouvez également accorder la permission delete_users.

Créer un rôle personnalisé : Vendeur WooCommerce

Pour créer un nouveau rôle, vous pouvez partir de zéro ou en copiant un rôle existant. Supposons que nous ayons besoin d’un Vendeur qui peut voir les produits et ajouter, éditer et publier ses propres produits. Mais nous ne voulons pas que ce rôle modifie ou supprime des produits existants.

Ajouter un nouveau rôle Vendeur

J’ai commencé par un rôle Contributeur et j’ai ajouté les capacités WooCommerce suivantes :

  • assign_product_terms : pour attribuer une catégorie ou une balise à un produit
  • delete_product : pour supprimer un seul produit qu’ils ont créé
  • delete_products : pour supprimer un lot de produits qu’ils ont créés
  • delete_published_products : pour supprimer des produits qu’ils ont publiés
  • edit_product : pour créer et éditer leurs propres produits
  • edit_product_terms : pour modifier une catégorie ou une balise sur leurs propres produits
  • edit_products : pour éditer en bloc leurs propres produits
  • edit_published_products : pour éditer leurs propres produits publiés
  • publish_products : peuvent publier leurs propres produits
  • read_product : peuvent visualiser les produits

Le Vendeur peut également importer un fichier de produits en format CSV.

Ce rôle personnalisé possède également les capacités WordPress suivantes :

  • edit_posts
  • read
  • upload_files
  • view

Le Vendeur peut ajouter et éditer ses produits, les publier, ajouter des images et des catégories de produits ou des balises


Le Vendeur peut uniquement voir les produits d’autres personnes et ne peut pas les éditer.

Rôles bbPress personnalisés

Comme mentionnés précédemment, les rôles de bbPress ne sont pas affichés avec les autres rôles.

Vladimir Garagulia, auteur du plugin User Role Editor, écrit au sujet de bbPress :

bbPress ne stocke pas son rôle dans la base de données comme WordPress le fait. bbPress crée son rôle à la volée via un code PHP pour chaque chargement de page. Les rôles bbPress ne sont pas pris en charge par une version gratuite du plugin User Role Editor pour cette raison. L’URE les exclut du traitement par conception. La prise en charge complète des rôles bbPress, y compris l’édition, est réalisée dans la version Pro d’User Role Editor.

Renommer des rôles

La modification du nom n’est qu’une option pour les rôles que vous avez créés et vous ne pouvez modifier que le nom du rôle, et non son ID.

Supprimer des rôles

Vous ne pouvez supprimer que les rôles que vous avez créés, et uniquement si aucun utilisateur ne se voit affecter ce rôle. Vous devez d’abord supprimer tous les utilisateurs d’un rôle pour pouvoir le supprimer.

Modifier des capacités d’utilisateurs individuelles

Vous pouvez obtenir un meilleur résultat en éditant les utilisateurs individuels et leurs capacités. Il vous suffit d’aller dans le profil utilisateur et de cliquer sur le lien Modifier à côté de Capacités. Vous pouvez alors ajouter ou supprimer des capacités !

Modification des capacités d’un seul utilisateur

Ajouter et supprimer des capacités

Si vous êtes un développeur de plugins, vous voudrez peut-être ajouter vos propres capacités. Vous pouvez en savoir plus sur la création de capacités dans le Codex.

Les capacités peuvent également être supprimées, par exemple celles des anciens plugins. N’utilisez cette option que si vous savez ce que vous faites. Notez que les capacités de WordPress ne peuvent pas être supprimées.


Conclusion

Le plugin User Role Editor fournit une interface utilisateur simple pour modifier les capacités de vos utilisateurs. Avant de changer ou d’ajouter des rôles, cependant, assurez-vous :

  • que c’est pour un cas d’utilisation pertinent
  • de tester vos modifications sur un site de simulation avant la mise en ligne
  • d’avoir complètement testé le nouveau rôle. Vous ne voulez pas que vos super-utilisateurs des super-vilains !

Source : https://premium.wpmudev.org/blog/power-up-your-users-with-the-user-role-editor-plugin/