Je suis presque sûr de comprendre les rôles et capacités configurés dans WordPress: des capacités granulaires, regroupées en rôles qui peuvent être attribués aux utilisateurs. Le code doit vérifier les capacités granulaires, pas les rôles (car les capacités de rôles particuliers peuvent changer). Les rôles ne sont pas nécessairement hiérarchiques (bien que les rôles par défaut le soient).
Existe-t-il un moyen d'attribuer plusieurs rôles aux utilisateurs? Alternativement, avoir un certain nombre de groupes de capacités et associer un ou plusieurs groupes à un utilisateur? Le fonctionnement de mon site comporte un certain nombre de responsabilités évidentes: mise à jour des pages Web, modération des forums, mise à jour du calendrier des événements, etc. Chaque responsabilité possède un groupe de capacités nécessaires pour effectuer les tâches qui lui sont associées. Je voudrais permettre à un utilisateur d'exécuter une ou plusieurs responsabilités. Ainsi, l'utilisateur A pourrait mettre à jour les pages Web et le calendrier des événements, mais pas modérer les forums (pas assez de tact), mais l'utilisateur B pourrait modérer les forums, mettre à jour le calendrier des événements, mais n'est pas autorisé à proximité des pages Web.
À moins de définir un rôle pour chaque combinaison possible de responsabilités, existe-t-il un moyen de le faire?
la source
Réponses:
Le manque de rôles multiples m'a énervé depuis longtemps car la classe WP_User sous-jacente prend en charge plusieurs rôles. J'ai même envisagé de rechercher une solution logicielle alternative. @lpryor - après avoir lu votre message, j'ai été motivé à le mettre en œuvre moi-même.
Cela a pris un nombre étonnamment court de lignes à faire, même si j'ai dû pirater le fichier users.php car j'étais trop paresseux pour créer un plugin séparé pour le faire pour moi. De toute évidence, c'est la mauvaise façon de le faire, donc si je suis suffisamment motivé à l'avenir, je peux essayer de le faire correctement.
Si vous ne vous souciez pas de pouvoir mettre à niveau vers la dernière version de Wordpress (que vous devriez) - vous pouvez implémenter plusieurs rôles avec les extraits de code ci-dessous. Veuillez garder à l'esprit que je ne suis pas un expert wordpress. J'ai juste ouvert les fichiers pertinents et apporté les modifications sans essayer de comprendre toutes les implications de ce que je faisais. Le code me semble raisonnable mais je ne lui ferais pas confiance avec ma vie.
(J'utilise 3.2 donc vos numéros de ligne peuvent varier) Dans class-wp-users-list-table.php juste avant la ligne 150, ajoutez-en quelques-uns comme suit:
puis changez la fonction current_account pour ressembler à ceci
}
Maintenant dans users.php Commentez les lignes 71-76
Remplacez set_role à la ligne 83 par add_role
À la ligne 92, ajoutez ce qui suit (il s'agit simplement d'un copier-coller légèrement modifié de l'action de promotion - je n'ai pas vérifié que la capacité de promotion_utilisateur est appropriée pour supprimer les rôles)
À la ligne 370, ajoutez ce qui suit
la source
Le plugin User Role Editor gère plusieurs rôles pour un utilisateur.
Une fois installé, Utilisateurs> sous chaque utilisateur est l'option Capacités. URE traite le premier rôle WP comme "rôle principal" et vous permet d'ajouter "d'autres rôles".
la source
J'utilise le plugin Members avec des capacités créées sur mesure.
Vous ne pouvez pas attribuer plusieurs rôles à une seule personne, mais vous pouvez créer des rôles et spécifier les capacités de ce rôle.
Dans les tempaltes, vous pouvez utiliser quelque chose comme current_user_can () .
la source