Travailler avec les rôles et capacités des utilisateurs WordPress • WPShout

By | février 11, 2020

WordPress pas cher

Il y a quelques choses que vous doit comprendre les rôles et les capacités des utilisateurs pour être un administrateur efficace d'un site WordPress: des choses comme ce qu'est un utilisateur, comment vous en créez un nouveau et pourquoi vous en feriez des utilisateurs. Il y a beaucoup de valeur à couvrir ces choses, mais notre objectif aujourd'hui est vraiment de bien comprendre le fonctionnement conceptuel de la gestion des utilisateurs et du système de rôles WordPress, et de couvrir quelques-unes des façons les plus importantes de le modifier.

Les bases d'un utilisateur WordPress

Chaque compte qui peut se connecter à un site WordPress représente un «utilisateur» et chaque utilisateur WordPress a un «rôle».

Chaque compte qui peut se connecter à un site WordPress représente un «utilisateur». Autrement dit, chaque «connexion» – une paire nom d'utilisateur-mot de passe – est une unité d'identification dans WordPress. Ces comptes utilisateurs sont les auteurs de publications, pages, médias, etc. En tant qu'administrateur d'un site WordPress, vous pouvez créer de nouveaux utilisateurs à volonté, en allant dans «Utilisateur> Ajouter un nouveau» dans la barre latérale d'administration. Vous devez généralement créer un nouvel utilisateur pour chaque personne que vous souhaitez vous connecter à votre site.

Vous avez peut-être également réalisé autre chose sur le système d'autorisation de WordPress: chaque utilisateur WordPress a un «rôle». Vous devez le sélectionner sur la page où vous créez un nouveau compte.

Rôles utilisateur par défaut de WordPress

Prêt à l'emploi, WordPress est livré avec les rôles suivants:

  • Super administrateur: Il s'agit d'un rôle de réseau multisite uniquement. Il s'agit, comme son nom l'indique, d'une version plus puissante d'un administrateur. Un super administrateur peut non seulement modifier et contrôler un seul site WordPress en tant qu'administrateur, mais également changer qui a accès à des sites spécifiques d'un réseau. Une chose fantaisiste pour appeler ce rôle serait "WordPress Multisite Keymaster". Mais je peux voir pourquoi ils sont allés avec "Super Admin" à la place 🤓
  • Administrateur: C'est le rôle que vous utilisez probablement pour vous connecter à votre propre site WordPress. C'est ce que WordPress fait du premier utilisateur sur un site par défaut, et c'est le rôle le plus puissant dans l'arsenal. Si un «administrateur» ne peut pas le faire hors de la boîte sur un site WordPress, cela ne peut être fait par personne. Installez des plugins, changez de thème, créez des utilisateurs, créez des publications, etc., etc.: le tout sous le contrôle de l'administrateur.
  • Éditeur: C'est le deuxième rôle le plus puissant. Vous pouvez faire tout ce que vous pouvez imaginer après la création et l'édition de médias et d'édition, mais vous ne pouvez pas créer un nouvel utilisateur, ni ajouter un nouveau plugin, ni faire quoi que ce soit qui change le fonctionnement du site.
  • Auteur: Une autre étape vers le bas d'un éditeur, le rôle d'auteur ne peut modifier leurs propres publications et médias. Ils ne peuvent pas modifier ceux des autres utilisateurs du site.
  • Donateur: Les contributeurs peuvent modifier leurs propres messages, supprimer les messages non publiés qu'ils ont publiés et lire le site. C'est ça. Ils ne peuvent même pas publier leurs propres publications.
  • Abonné: Le rôle d'abonné est destiné à cela: une personne que vous voulez avoir un compte sur votre site WordPress, mais que vous ne voulez pas pouvoir faire autre chose que lire votre site comme une personne sans compte.

Les implications pour la sécurité d'un utilisateur WordPress

Pour des raisons de sécurité, vous voulez fournir aux individus le moins d'accès possible qui leur permette de faire ce dont ils ont besoin.

Bien que ce ne soit pas notre objectif aujourd'hui, il convient de noter un principe général de sécurité partout: vous voulez fournir aux individus le moins d'accès possible qui leur permette de faire ce dont ils ont besoin. Cela est aussi vrai sur votre site WordPress que pour l'arsenal nucléaire d'un pays.

L'utilisateur que vous utilisez le plus souvent sur votre site WordPress ne doit généralement pas être un administrateur.

C'est pourquoi vous rencontrerez des personnes donnant les conseils peu suivis que l'utilisateur que vous utilisez le plus souvent sur votre site WordPress – pour apporter des modifications, publier des articles, faire des commentaires, etc. – ne devraient généralement pas être un administrateur. Le rôle «Administrateur» est le plus puissant fourni avec un site WordPress (unique, non réseau); donner autant de pouvoir à un utilisateur qui n'a qu'à publier et éditer des articles et d'autres médias représente une erreur de sécurité inutile.

Pour les tâches de publication WordPress normales, le rôle Éditeur est plus que suffisant; et de façon réaliste, si vous êtes le seul écrivain sur le site, il est possible que le rôle d'auteur fasse l'affaire pour vous. Dans tous les cas, vous devez vous connecter à un utilisateur Administrateur – que vous auriez également – uniquement lorsque vous devez faire des choses que votre autre rôle ne peut pas: créer de nouveaux utilisateurs, installer ou désinstaller des plug-ins, changer de thème, etc. Cela signifie qu'un le compromis de votre compte WordPress le plus utilisé – disons que vous le laissez par inadvertance connecté dans un café – ne permet pas à quelqu'un de faire des ravages sur votre site.

Vous ne devez pas laisser aux anciens comptes plus d'accès qu'ils n'en ont besoin aujourd'hui.

De même, vous ne devriez pas simplement donner des comptes aux gens, de tout type, sans aucune considération. Et vous ne devriez pas laisser aux anciens comptes plus d'accès qu'ils n'en ont besoin aujourd'hui. Supposons que quelqu'un écrive pour votre site mais ne le fait plus: faites-en un abonné. Leur compte existe toujours, de sorte que leurs publications restent disponibles et correctement attribuées, mais ils ne peuvent pas accidentellement faire tout ce qu'ils ne devraient pas pouvoir faire sur votre site.

Comment les capacités et les rôles s'entremêlent

Rôles et capacités «WordPress CodexJusqu'à présent, nous avons établi que différents rôles d'utilisateur ont des capacités différentes sur un site WordPress. C'est, en fait, le cœur du système de contrôle d'accès de WordPress: Un utilisateur est un membre du groupe d'utilisateurs auquel un rôle spécifique a été attribué, et ce rôle lui-même est mappé à diverses fonctionnalités sur le site.

Pour mieux comprendre cela, vous pouvez faire bien pire que de simplement regarder le graphique géant sur la page Rôles et capacités du Codex qui est écran à droite. À mesure que nous descendons les rôles que j'ai énumérés plus tôt, votre rôle aura de moins en moins de fonctionnalités spécifiques disponibles dans WordPress.

Cette mise en correspondance des capacités nommées concrètes avec les rôles d'utilisateur est l'une des fonctionnalités les plus puissantes et utiles du système de contrôle d'accès de WordPress. Lorsque vous devez responsabiliser (ou désactiver) un utilisateur ou un ensemble d'utilisateurs dotés de capacités spécifiques, vous pouvez facilement le faire, en changeant simplement le rôle de l'utilisateur.

De même, vous aurez parfois besoin de l'ensemble d'un ensemble d'utilisateurs pour disposer de nouvelles fonctionnalités. Peut-être que vos éditeurs travaillent comme modérateurs pour les commentaires, et vous aimeriez également qu'ils aient la possibilité de supprimer des utilisateurs de votre site. (Vous avez peut-être de vrais trolls que vous aimeriez retirer du mix.) Ensuite, vous pouvez simplement modifier le rôle de l'éditeur pour lui donner ce pouvoir – et seulement ce pouvoir, appelé remove_users. Grâce au système de rôles et de capacités, vous pouvez le faire sans avoir à vous soucier du fait que vous avez 20 éditeurs sur votre site.

Plugins qui vous permettent de modifier les capacités d'un rôle

Une fois que vous comprenez les bases du fonctionnement du système d'accès utilisateur WordPress, vous pouvez effectuer un changement comme celui que je viens de mentionner (donner aux rédacteurs la possibilité de «supprimer des utilisateurs») de plusieurs façons.

La première façon consiste à utiliser l'un des nombreux plugins. L'éditeur de rôles d'utilisateur est le plus courant, mais n'hésitez pas à faire le tour si vous aimez les autres. Ces plugins vous offrent tous un moyen pratique et visuel d'éditer les choses que les utilisateurs pourront faire sur votre site.

Ils vous permettent également de créer de nouveaux rôles – vous avez peut-être besoin de créer des utilisateurs qui sont simplement et seulement Types de «Modérateur de commentaires». Vous pouvez simplement créer ce rôle, et assurez-vous d'affiner les fonctionnalités dont il a besoin en quelques clics.

Ces plugins sont parfaits pour la plupart des utilisateurs de WordPress, qui n'ont pas besoin de transpirer leur modeste surcharge de performances. De manière réaliste, pour la plupart des sites, les frais généraux d'un petit plugin comme celui-ci ne sont pas le plus gros goulot d'étranglement, donc l'avantage supplémentaire d'un plugin dédié pour simplement apporter les modifications que vous souhaitez ne vaut pas la peine de transpirer le PHP.

Mais, si vous êtes un développeur, ou que les performances sont trop lourdes à supporter, c'est assez facile à faire avec quelques lignes de PHP.

Changer les capacités d'un rôle d'utilisateur WordPress avec PHP

En PHP, un rôle WordPress est un objet que vous utilisez et modifiez.

En PHP, un rôle WordPress est un objet que vous utilisez et modifiez. Vous pouvez y accéder de deux manières: directement en accédant à une variable globale – $ wp_roles – ou via une fonction accessoire appelée get_role. J'aime mieux le second pour deux raisons:

  1. Je n'aime pas les variables globales.
  2. Je pense que le get_role la version améliore la lecture du code.

Dans les deux cas, nous allons poursuivre avec notre exemple de permettre à nos rédacteurs remove_users. Cela ressemble à ceci, si vous utilisez get_role:

function wps_editor_can_remove_users () 
    $ editor = get_role ('éditeur');
    $ editor-> add_cap ('remove_users');

ou, si vous préférez accéder à une variable globale:

function wps_editor_can_remove_users () 
    global $ wp_roles;
    $ wp_roles-> add_cap ('éditeur', 'remove_users');

Dans le premier exemple, la récupération d’un rôle (‘éditeur’) prend en charge 'éditeur' paramètre sur le add_cap appel de méthode pour vous, que j'aime; de toute façon fonctionne.

Ces méthodes peuvent être appelées directement dans votre plugin ou dans votre thème functions.php – les modifications sont stockées dans la base de données, elles peuvent donc être appelées à tout moment – ou peuvent être accrochées à init via une action WordPress.

Tous les deux add_cap et remove_cap sont méthodes objet, et pas simplement les fonctions que vous appelez.

Il est très clair que les deux add_cap et remove_cap (son contraire) sont méthodes objet, et pas simplement les fonctions que vous appelez. Autrement dit, vous ne pouvez pas appeler add_cap ('éditeur', 'enlever_utilisateur'): vous devez d'abord obtenir un WP_Role objet, soit en utilisant get_role ou en accédant au global $ wp_roles objet.

Création de nouveaux rôles d'utilisateur WordPress, par programme

Nous avons mentionné que les plugins vous permettront de créer de nouveaux rôles, en plus de changer les capacités des rôles existants. Pour ce faire dans votre propre PHP, vous utilisez le add_role une fonction. Il prend trois paramètres:

  1. Un nom de limace pour le rôle – disons 'comment_moderator'
  2. Un nom d'affichage pour le rôle – soit «Modérateur des commentaires» ou __ ('Commment Moderator', 'plugin-slug') si vous vous inquiétez de l'internationalisation
  3. Un tableau des capacités que vous voulez que ce type d'utilisateur ait

En tout, cela ressemble à ceci:

register_activation_hook (__FILE__, 'wps_add_roles_on_activation');
fonction wps_add_roles_on_activation () 
    add_role (
        'comment_moderator',
        __ ('Commment Moderator', 'plugin-slug'),
        tableau (
            'read' => true,
            'edit_posts' => true,
            'edit_other_posts' => true,
            'edit_published_posts' => true,
            'average_comments' => true
        )
    );

Par souci de concision, ce rôle ne dispose que de quatre capacités. Les modérateurs de commentaires peuvent modérer les commentaires et apporter des modifications et des corrections mineures aux messages (probablement en réponse aux commentaires). Ils peuvent modifier leurs propres publications, les publications d'autres personnes et les publications qui ont été publiées. C’est tout ce que ce rôle peut faire, rien d’autre.

Encore une fois, comme de nouveaux rôles sont stockés dans la base de données et rechargés à partir de là par WordPress en cas de besoin, vous pouvez – et devriez généralement – les faire créer directement lorsque votre plugin (ou thème si vous construisez cela dans un thème, ce que vous ne devriez pas '' t) est activé. Cela ne casse rien si vous les avez accrochés au init action, mais il est légèrement moins performant.

Modification des capacités d'un utilisateur spécifique

Ignorer le système de rôles de WordPress et accorder des fonctionnalités spécifiques à l'utilisateur est possible, mais c'est très rarement la meilleure solution.

Jusqu'à présent, nous avons discuté de l'utilisation des capacités WordPress accordées et maintenues par les rôles d'utilisateur. Voici ce que je vous recommande de faire pour changer, contrôler et modifier l'accès dans presque tous les cas. Il s'agit d'un système plus puissant et plus flexible que d'essayer de contrôler manuellement les actions de chaque utilisateur de votre site.

Cela étant dit, il se peut que vous deviez parfois traiter avec un utilisateur spécifique qui a besoin de plus ou moins de pouvoirs, et vous savoir que vous ne voudrez jamais autoriser (ou priver de pouvoir) un autre utilisateur de la même manière à un autre moment de l'historique du site. Si ce n'est pas vrai, suivez les quelques étapes supplémentaires de création d'un rôle, que seul cet utilisateur obtient pour l'instant.

Si vous voulez vraiment changer les capacités d'un utilisateur spécifique, vous pouvez le faire avec le add_cap et remove_cap méthodes sur l'utilisateur lui-même. Cela ressemble à quelque chose comme:

add_action ('init', 'wps_david_cant_edit');
fonction wps_david_cant_edit () 
    $ user_id = 7; // L'ID de l'utilisateur
    $ user = new WP_User ($ user_id);
    $ user-> remove_cap ('edit_posts');

Il s'agit essentiellement d'un remplacement spécifique d'un utilisateur spécifique, après les capacités générales du rôle ont été chargées. Encore une fois, cela est possible, mais ce n'est probablement pas la meilleure solution: les préoccupations qui vous ont amené à vouloir donner ou prendre des capacités d'un utilisateur sont susceptibles d'être partagées avec un autre utilisateur à un moment donné, et vous en auriez plus pouvoir avec un rôle.

Ce que nous avons appris sur les utilisateurs de WordPress

En son cœur, le système utilisateur WordPress est la façon dont nous traitons le pouvoir sur un site WordPress. En attribuant à chaque utilisateur du système un rôle nommé, WordPress donne accès à un ensemble de fonctionnalités clairement définies qui déterminent ce que cet utilisateur peut faire sur le site. En raison de cette couche supplémentaire – des rôles nommés – entre ce que les utilisateurs peuvent faire et ce qu'ils sont, vous bénéficiez d'une tonne de flexibilité. C’est juste une autre chose qui rend WordPress génial. Bon piratage!

Crédit d'image: Chris Heard