Formation « Développer un thème WordPress sur mesure »

Les rôles utilisateurs et capacités

Lecture : 6 minutes • 2

Les utilisateurs inscrits sur un site n’ont pas tous les mêmes droits. Chacun possède des rôles pré-établis en fonction de ce qu’ils pourront faire ou non. On va voir dans ce cours quels sont ces rôles, comment en créer de nouveaux et enfin comment tester les droits d’un utilisateur via PHP.

Lorsque vous installez un nouveau site, vous en êtes de facto l’administrateur : vous avez tous les droits. Quand vous ajoutez un nouvel utilisateur, il faudra sélectionner un rôle, et c’est une tâche à ne pas négliger.

En effet, il faut savoir définir des droits adaptés en fonction de la tâche assignée à la personne, de ses compétences et de la confiance qu’on lui accorde.

Si vous donnez tous les droits à un rédacteur, il pourrait malencontreusement modifier des paramètres ou supprimer des extensions nécessaires au bon fonctionnement du site.

Pire encore, mettez un client qui n’est pas très à l’aise avec l’outil comme administrateur, et c’est la catastrophe assurée !

Commençons déjà par voir quels sont les rôles qui sont proposés par défaut dans WordPress.

Les rôles par défaut dans WordPress

Il existe nativement 5 rôles différents, et chacun possède ses propres droits et limites.

Tableau indiquant les capacités de chaque rôle utilisateur dans WordPress
Les rôles utilisateurs dans WordPress

Les 5 rôles par défaut

On va passer rapidement en revue chaque rôle :

L’administrateur

Le rôle Administrateur dans WordPress

L’administrateur, il a tous les droits. Il peut modifier la configuration du site, changer de thème, installer et supprimer des extensions, gérer toutes les publications, importer des médias… bref, c’est Dieu le père. Le premier utilisateur créé avec le site sera forcément administrateur.

L’éditeur

Le rôle Éditeur dans WordPress

Juste en dessous, il y a l’éditeur. Ce rôle ne peut pas changer les réglages, installer des extension ou des thèmes. Il est limité aux fonctions de publication sur le site. Il peut publier ses propres articles, ceux des autres, et gérer les commentaires.

C’est souvent le rôle qu’on attribue à un client, de cette manière il a un accès complet à son contenu, mais pas aux réglages sensibles du site.

L’auteur

Le rôle Auteur dans WordPress

L’auteur peut créer des articles, les publier, répondre à ses commentaires. Mais il ne peut pas modifier ou publier les articles des autres. C’est le rôle idéal pour un rédacteur web qui doit écrire des contenus sur votre site, ou d’un rédacteur régulier sur votre blog.

Le contributeur

Le rôle Contributeur dans WordPress

Le contributeur commence à avoir des droits restreints : il peut créer un article, mais ne peut pas le publier. Il faudra alors qu’un éditeur le valide à sa place. Chose contraignante : le contributeur ne peut même pas importer un média (image, document, vidéo).

Ce rôle est idéal pour le « guest blogging », c’est-à-dire lorsque vous invitez une personne à écrire exceptionnellement un article sur votre blog.

L’abonné

Le rôle Abonné dans WordPress

Ce dernier ne peut rien faire, à part remplir son profil pour ne plus avoir à indiquer son nom et e-mail à chaque fois qu’il veut publier un commentaire. Il a un accès restreint à l’interface d’administration.

Le saviez-vous ?

Il existe un 6ème rôle “Super Admin” si vous activez WordPress Multisite. Le super Admin possède tous les droits, sur chacun des sites du réseau et la configuration de celui-ci.

Pour votre client, éditeur ou administrateur ?

Vient alors l’épineuse question du rôle à attribuer à un client. Comme on vient de le voir, à part administrateur et éditeur, les autres rôles n’ont d’utilité que si votre site possède une ligne éditoriale au travers d’un blog ou d’un magazine.

Si vous passez votre client administrateur, il aura tous les droits, et risquerait de tout casser. Mais si vous le passez éditeur, il ne pourra pas accéder aux configurations de certaines extensions, et c’est parfois bien gênant.

Conseil

Si vous faites confiance à votre client et que vous jugez qu’il a l’aisance nécessaire, mettez-le administrateur. Sinon, passez-le éditeur.

Mais on pourrait tout aussi bien créer un rôle sur mesure, en choisissant quels sont les droits qu’il aura ou non parmi une liste que l’on appelle les capacités.

Les extensions de gestion de rôles

Il existe des extensions pour gérer les rôles utilisateurs en profondeur, comme par exemple User Role Editor. Il permet de définir de nouveaux rôles et de définir ses capacités.

User Role Editor

User Role Editor

L’extension WordPress « User Role Editor » permet de modifier facilement les rôles et capacités. Modifiez / ajoutez / supprimez les rôles et capacités.

Par Vladimir Garagulya

Créer et tester les rôles en PHP

Si vous êtes plutôt du genre à tout faire vous-même, il est bien évidemment possible de créer des rôles, assigner des droits et contrôler le tout avec du code !

Créer un rôle PHP

Pour créer un rôle en PHP, on va utiliser la fonction add_role() de WordPress. On pourrait créer un rôle pour le référenceur par exemple : il pourrait modifier les publications, importer des médias et même modifier les paramètres du site.

Il n’aurait pas le droit par contre d’ajouter de nouvelles extensions ou créer de nouveaux utilisateurs, c’est ce qui le différencie d’un administrateur.

Voici le code correspondant, à placer dans votre functions.php :

PHP
functions.php

À éviter

Un nouveau Rôle est enregistré en base de données, comme un article. Contrairement aux Custom Post Types, si vous retirez le code PHP du rôle, celui-ci continuera d’exister.

Afin d’éviter de tenter à chaque fois de créer le rôle pour rien, on donc va enregistrer l’information dans une option que j’appelle custom_roles_version : la première fois, cette option n’existe pas, du coup le code exécute la boucle, et créé le rôle. Et pour toutes les fois suivantes, le code sera ignoré.

Pour une extension, ce sera beaucoup plus simple car il existe un hook qui ne se lance qu’à l’activation de celle-ci.

Si un jour vous souhaitez supprimer un rôle, il faudra utiliser la fonction remove_role().

Rôle et capacités

Un rôle, c’est la somme de ses capacités (ou capabilities en anglais). Et une capacité, c’est le droit de faire telle ou telle chose. Dans WordPress il existe des dizaines de capacités correspondant à des actions bien précises. Voici quelques exemples :

  • edit_pages : définit si une personne à le droit de modifier n’importe quelle page ;
  • delete_posts : définit si une personne à le droit de supprimer des articles ;
  • activate_plugins : si l’utilisateur peut activer une extension ;
  • manage_options : si l’utilisateur peut modifier les paramètres du site.

Par défaut, seul l’administrateur possède la capacité manage_options. Mais du coup, vous pourriez l’utiliser dans un rôle personnalisé.

Dans l’exemple précédent, j’ai justement attribué quelques capacités à mon rôle SEO Manager :

PHP
functions.php

Pour connaitre tous les rôles et les capacités dans WordPress, je vous invite à aller voir la documentation officielle :

Documentation officielle des rôles

Changer les capacités après avoir créé un rôle

Du coup, si vous souhaitez changer les droits d’un rôle après l’avoir créé, il faudra utiliser la fonction add_cap() ou remove_cap() :

PHP
functions.php

Et afin de bien l’intégrer à notre système qui évite d’exécuter inutilement le code à chaque fois, on incrémente la version de notre option :

PHP
functions.php

De cette manière, on s’assure qu’à la prochaine exécution, le thème ou l’extension disposent du bon rôle avec les bonnes capacités.

Tester le rôle ou les capacités de l’utilisateur connecté

Dans votre code, si vous avez besoin de vérifier que votre utilisateur est bien connecté, et possède les bons droits, il existe la fonction current_user_can().

PHP
functions.php

Elle permet de tester 2 choses :

  • Soit directement le niveau de rôle de l’utilisateur ;
  • Ou alors tester une capacité en particulier.

Sur un site simple, le test du rôle sera suffisant, mais si vous devez gérer beaucoup de rôles différents, il sera peut-être plus simple de tester une capacité en particulier, comme par exemple manage_options.

Pour plus d’informations à propos de cette fonction, consultez la documentation.

On va en rester là pour le moment avec les rôles utilisateurs, mais on les manipulera plus en détails dans la formation Développer des extensions.


WordPress montre une fois de plus qu’au delà des concepts proposés par défaut, on peut toujours étendre le système pour palier à nos besoins spécifiques. Et les rôles ne dérogent pas à la règle.

Pour une sécurité maximale sur votre site, attribuez le bon rôle à vos utilisateurs, et pensez à tester votre code grâce aux fonctions que l’on vient de voir.

2

Questions, réponses et commentaires

  1. Christophe CARON

    Le 20 janvier 2023

    Bonjour, l’article est top par contre il y a une faute que j’ai repéré:
    dans la partie Rôle et capacités
    tu écris la variable $capacities puis tu utilises $capabilities

    1. Maxime BJ

      Le 20 janvier 2023

      Je viens de corriger. Bien joué et merci pour ta contribution !

Laisser un commentaire