Petite astuce autorisations utilisateur et votre plugin

Aujourd'hui, nous allons passer en revue les autorisations des utilisateurs dans le cadre de votre plugin. Plus précisément, je discuterai de ce que vous devriez utiliser pour déterminer qui peut voir les différents menus d’administrateur de votre plugin..


Une solution à un problème salissant

Je suis tombé sur la complexité des autorisations des utilisateurs lorsque je travaillais sur une installation multi-site de WordPress. Nous hébergions environ 15 à 20 sites Web et environ 30 plugins étaient installés. Chaque blog avait des utilisateurs de différents niveaux et responsabilités. Mes employeurs recevaient des demandes ou trouvaient des plugins avec les fonctionnalités qu’ils voulaient offrir et c’était à moi de les installer et de les configurer. C'est alors que j'ai rencontré des problèmes. Souvent, je me suis retrouvé à modifier des plugins pour les adapter simplement aux rôles d'utilisateur que nous utilisions. Le désordre était principalement dû en partie aux différentes façons dont WordPress vous permet de définir qui peut visualiser et utiliser votre plugin.

Il était une fois WordPress incorporé "Niveaux d'utilisateurs". Il y avait 10 niveaux, chacun accordant plus de privilèges à l'utilisateur que le dernier. Donc assez souvent, le développeur ciblerait un niveau d'utilisateur spécifique comme ceci:

 

Pour ceux d'entre vous qui ne connaissent pas les fonctions WordPress, la fonction add_menu_page est définie comme suit:

 add_menu_page (я $ page_title, я $ menu_title, я capacité $, я $ menu_slug, я $ fonction, я $ icon_url, я $ positionя);

Cet ensemble de code cible l'utilisateur de niveau 10, ce qui correspond au jeu d'autorisations le plus élevé. Bien que utiles dans certaines circonstances, les niveaux d’utilisateur n’ont pas apporté autant de souplesse que j’ai aimé. Heureusement, lors de la sortie de WordPress 2.0, «Roles and Capabilities» nous a été attribué. Les capacités ont remplacé les niveaux d'utilisateurs et dans WordPress 3.0, les niveaux d'utilisateurs sont devenus dépréciés.

Avec la nouvelle façon de définir les autorisations des utilisateurs, nous avons acquis des moyens supplémentaires de cibler les utilisateurs. Le premier est par les rôles lui-même. En utilisant les mêmes fonctions que ci-dessus, je vais illustrer le ciblage d'un utilisateur par rôle..

 

En substance, cela n’est pas très différent de l’utilisation des niveaux d’utilisateur, et dans ma situation, ce n’était pas une bonne chose. Avec notre configuration multi-site, les rôles d’administrateur n’étaient utilisés que par des personnes internes. Le plus grand rôle autorisé pour les clients était celui de rédacteur en chef. Mais ils devaient encore pouvoir faire certaines choses sur leur site. Et malheureusement, beaucoup de plugins que j'ai rencontrés utilisaient encore les niveaux d'utilisateur ou les rôles eux-mêmes pour autoriser ou refuser l'utilisation de leur plugin. Cependant, WordPress a fourni une solution beaucoup plus robuste à ce problème en termes de capacités.

Les fonctionnalités vous permettent de cibler un utilisateur en fonction de ses capacités et non de son rôle. Considérons l'exemple ci-dessous.

 

Les fonctions testent maintenant si un utilisateur peut ou non upload_files. Si les fonctionnalités n'ont pas été modifiées, le menu est visible et le code est exécuté pour les administrateurs super, les administrateurs, les éditeurs et les auteurs. Il s'agit d'une bien meilleure solution, car des fonctionnalités individuelles peuvent être ajoutées ou supprimées des rôles dans les fonctions de thème..

Maintenant, bien que ce soit la meilleure solution dans de nombreuses circonstances, j'aime aller un peu plus loin. Lorsque je développe un plug-in pour des fonctions non administratives, telles qu'une plug-in galerie ou témoignage, je préfère accorder un accès utilisateur en fonction d'une fonctionnalité personnalisée créée pour le plug-in. J'ai donné un exemple de la procédure à suivre ci-dessous.

 

Comme vous pouvez le constater, nous ajoutons une fonctionnalité appelée "my_plugin_cap" au rôle d’éditeur. Ensuite, nous ajoutons une page de menu visible à tous les utilisateurs dotés de cette fonctionnalité. Ce qui est bien, c’est que dans le plug-in, vous pouvez ajouter la fonctionnalité aux utilisateurs appropriés. Si l’administrateur souhaite autoriser l’accès à d’autres rôles, il peut le faire en ajoutant lui-même la fonctionnalité via les fonctions de thème. Dans mon cas, cela signifie que je n'ai plus besoin d'éditer les plugins eux-mêmes et que je peux me sentir libre de les mettre à jour sans craindre de perdre les modifications que j'ai apportées..

J'espère que cette astuce vous a été utile. Faites-moi savoir si vous avez des questions ou des préoccupations dans les commentaires ci-dessous. Bonne programmation du plugin!