J'ai enregistré plusieurs taxonomies personnalisées pour un type de publication personnalisé. Le code pour l'un d'eux est le suivant:
$labels = array(
'name' => __( 'Genre', 'textdomain' ),
'singular_name' => __( 'Genre', 'textdomain' ),
'search_items' => __( 'Search Genres', 'textdomain' ),
'all_items' => __( 'All Genres', 'textdomain' ),
'parent_item' => __( 'Parent Genre', 'textdomain' ),
'parent_item_colon' => __( 'Perent Genre:', 'textdomain' ),
'edit_item' => __( 'Edit Genre', 'textdomain' ),
'update_item' => __( 'Update Genre', 'textdomain' ),
'add_new_item' => __( 'Add New Genre', 'textdomain' ),
'new_item_name' => __( 'New Genre', 'textdomain' ),
'menu_name' => __( 'Genres', 'textdomain' ),
);
$args = array(
'labels' => $labels,
'public' => true,
'show_admin_column' => true,
'show_ui' => true,
'hierarchical' => true,
'capabilities' => array(
'manage_terms' => 'edit_posts',
'edit_terms' => 'edit_posts',
'delete_terms' => 'edit_posts',
'assign_terms' => 'edit_posts'
)
);
register_taxonomy( 'genres', 'book', $args );
J'ai des problèmes de capacités, dans la mesure où je veux qu'une des taxes personnalisées puisse être gérée par les auteurs.
Si je définis les fonctionnalités comme le code ci-dessus, tel que 'manage_terms' => 'edit_posts'
, les auteurs ne sont pas autorisés à ajouter de nouveaux termes à la taxonomie personnalisée, même s'ils possèdent des fonctionnalités edit_posts.
J'ai également essayé d'ajouter des fonctionnalités personnalisées au rôle auteur et de les attribuer lors de l'enregistrement de la taxonomie personnalisée, mais sans succès.
Qu'est-ce qui fonctionne est d'ajouter 'manage_categories' au rôle de l'auteur, mais cette solution n'est pas satisfaisante dans la mesure où toutes les taxonomies sont ensuite modifiables par les auteurs.
Merci d'avance.
Tout comme les capacités du CPT, celles de la taxonomie sont également personnalisables, dans register_taxonomy()
:
capacités
- 'manage_terms' - 'manage_categories'
- 'edit_terms' - 'manage_categories'
- 'delete_terms' - 'manage_categories'
- 'assign_terms' - 'edit_posts'
Comme vos auteurs ont uniquement edit_posts
, cela fonctionne comme vous le constatez: ils peuvent attribuer des termes existants, mais pas les créer. Vous pouvez personnaliser les fonctionnalités de la taxonomie en question et attribuer des fonctionnalités respectives aux auteurs afin qu'ils puissent y créer des termes (mais pas dans d'autres taxonomies).
Lorsque vous définissez des fonctionnalités lors de l’enregistrement d’une taxonomie, vous définissez de nouvelles fonctionnalités équivalentes aux fonctionnalités existantes de manage_terms
edit_terms
delete_terms
et de assign_terms
.
Donc vous devriez faire quelque chose comme ça puisque votre taxonomie est Genre
:
'capabilities' => array(
'manage_terms' => 'manage_genre',
'edit_terms' => 'edit_genre',
'delete_terms' => 'delete_genre',
'assign_terms' => 'assign_genre',
)
Une fois cette opération effectuée, vous pourrez mapper ces fonctionnalités sur un rôle d'utilisateur. La méthode la plus simple et la méthode que je privilégie consiste à utiliser un plug-in tel que Capability Manager Enhanced , bien qu'il existe de nombreux plug-ins qui feront l'affaire.