J'ai un site WordPress où certaines personnes (clients non experts) ont besoin de créer/gérer des utilisateurs. Le site utilise plusieurs types de publication personnalisés et chaque utilisateur se voit attribuer des autorisations pour un ou plusieurs de ces cpt. En ce moment, je vois deux façons de gérer cela et je ne suis pas très heureux avec aucun d’eux.
(1) Rôles d’utilisateur : Si j’ai quatre types de publication personnalisés (A, B, C, D), j’aurais besoin de beaucoup de rôles d’utilisateur couvrir toutes les combinaisons de capacités. (Rôle A, Rôle AB, Rôle ABD ...). Ce n'est pas très pratique pour le client à gérer.
(2) Plugin de gestion des capacités : Si c'était moi qui gérais les utilisateurs, j'utiliserais un plugin comme "User Role Editor". Mais c’est assez compliqué à gérer pour mes clients non experts et le risque de gâcher le système est élevé.
Ce que je pense, c’est d’avoir des cases à cocher simples (au moins lors de la création d’un nouvel utilisateur) où le client peut choisir les types de publication personnalisés auxquels le nouvel utilisateur devrait pouvoir accéder. J'aime: cet utilisateur pourra tout faire avec les cpt A, B et D.
Y at-il un moyen de faire cela et est-ce même quelque chose que vous devriez faire avec WordPress?
@RyanLoremIpsum m'a orienté dans la bonne direction, ce qui m'a permis d'écrire un petit plugin aussi simple que j'en ai besoin. On dirait quelque chose comme ça:
Vous n'avez pas nécessairement à attribuer des rôles pour gérer les capacités de l'utilisateur.
Commencez par enregistrer vos types de publication personnalisés avec leurs fonctionnalités respectives. Voir les capacités sous Référence de fonction/type de poste de registre - Paramètres
Vous pouvez utiliser add_cap ou remove_cap pour ajouter ou supprimer des capacités utilisateur pour une utilisateur spécifique.
// Add capability to a specific user
$user = new WP_User( $user_id );
$user->add_cap( 'can_edit_posts');
// Remove a capability from a specific user.
$user = new WP_User( $user_id );
$user->remove_cap( 'read_private_posts' );
C'est pratique car cela vous permet d'accorder à un utilisateur des fonctionnalités n'appartenant pas au rôle attribué à l'utilisateur.
Par exemple, vous pouvez créer un formulaire avec des cases à cocher pour chaque type de publication, comme vous le disiez. Pour chaque case cochée, cela attribuerait à un ID utilisateur donné les fonctionnalités que vous avez créées lors de l'enregistrement de ce type de publication. De même, décocher une case peut supprimer les fonctionnalités.