web-dev-qa-db-fra.com

Créer un rôle d'utilisateur limité à un CPT spécifique

J'essaie de créer un rôle qui peut créer et soumettre à un CPT uniquement. Lorsque je supprime edit_post de ce rôle, cela annule également la possibilité de créer et de modifier les CPT assignés et enregistrés. J'ai également enregistré et attribué la fonction edit_CPTs au rôle. Donc, fondamentalement, j'ai ceci:

edit_cpt
edit_cpts

et j'ai emporté

edit_posts

Mais une fois que j'ai supprimé edit_posts, le rôle ne peut même pas voir les CPT dans l'interface du tableau de bord. Toute aide serait grandement appréciée.

2
Ollie

Vous devez enregistrer le CPT avec votre fonctionnalité personnalisée, puis attribuer cette limite spécifique à l'utilisateur.

Lorsque vous transmettez les arguments à register_post_type , définissez capability_type sur votre nouvelle fonctionnalité. Le contrôle se transforme donc en 'edit_cpts' au lieu de 'edit_post'.

En définissant 'capability_type' => [ 'cpt', 'cpts' ], "cpt" mappera sur "post" pour les vérifications de capabilité standard. Ainsi, là où vous feriez habituellement une vérification pour "edit_post", cochez maintenant "edit_cpt".

Lorsque vous supprimez complètement la limite primitive 'edit_posts' des utilisateurs/rôles comme vous l'avez fait, vous devez ajouter votre nouveau numéro avec WP_Role::add_cap() et le rechercher avec current_user_can( 'edit_cpts' ).

3
Morgan Estes