Plutôt que de vérifier si un utilisateur est « administrateur » ou « éditeur », WordPress raisonne en termes d’autorisations unitaires : peut-il publier un article, supprimer un utilisateur, installer un plugin ? Chacune de ces autorisations porte un nom précis.
Fonctionnement dans WordPress
Une capacité est une chaîne de caractères, par exemple edit_posts, manage_options ou publish_pages, associée à un ou plusieurs rôles. Dans le code, on ne teste jamais un rôle directement : on interroge la capacité via current_user_can(), ce qui permet de modifier finement les autorisations sans casser la logique du thème ou du plugin.
Exemple
if ( current_user_can( 'edit_others_posts' ) ) {
// Afficher le lien vers tous les brouillons, pas seulement les siens
}
Pièges fréquents
- Certaines capacités sont « méta » (
edit_postau singulier) et doivent être testées avec l’ID de l’objet concerné :current_user_can( 'edit_post', $post_id ). - Ajouter une capacité à un rôle via
add_cap()modifie la base de données de façon permanente ; il faut la retirer explicitement à la désactivation du plugin qui l’a créée.
Bon à savoir
Un même nom de capacité peut désigner deux réalités différentes selon le contexte de l’appel : la capacité « primitive » brute stockée en base, ou la capacité « méta » qu’un filtre map_meta_cap traduit à la volée en une combinaison de plusieurs vérifications, comme pour la suppression d’un article publié par un autre auteur.
Il existe aussi des capacités globales qui n’ont de sens qu’à l’échelle du réseau entier en Multisite, telles que manage_network ou manage_sites, réservées de fait au Super Administrateur et invisibles pour les rôles habituels d’un site individuel.