J'ai été assez confus avec le paramètre CPT (Custom Post Type) et l'ajout de fonctionnalités générées à un rôle.
J'ai donc un CPT appelé 'external_role' enregistré comme suit:
add_action('init', 'external_roles_post_type_init');
function external_roles_post_type_init() {
$labels = array(
'name' => _x('External Roles', 'post type general name'),
'singular_name' => _x('external role', 'post type singular name'),
'add_new' => _x('Add New', 'external role'),
'add_new_item' => __('Add New External Role'),
'edit_item' => __('Edit External Role'),
'new_item' => __('New External Role'),
'view_item' => __('View External Role'),
'search_items' => __('Search External Roles'),
'not_found' => __('No job found'),
'not_found_in_trash' => __('No job found in Trash'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'has_archive' => 'past-external-roles',
'rewrite' => array('slug' => 'external-roles','with_front' => false),
'query_var' => true,
'capability_type' => array('external_role', 'external_roles'),
'map_meta_cap' => true,
'hierarchical' => false,
'show_in_nav_menus' => false,
'menu_position' => 20,
'supports' => array(
'title',
'editor',
'author',
'custom-fields',
'revisions'
)
);
register_post_type('external_role',$args);
}
En regardant le paramètre capability_type
(si je le comprends bien), les capacités suivantes seront générées:
Méta capacités:
Fonctionnalités primitives (générées à partir de méta fonctionnalités):
Ok, je souhaite maintenant que mes capacités soient optimisées par le rôle admin
, afin que les administrateurs puissent entièrement gérer un nouveau CPT.
Je pensais que si je ne fais que grand meta capabilities
, cela signifierait que tous les primitive capabilities
seraient également inclusivement pour le rôle? Est-ce le cas?
Voici ce que j'ai pour ajouter des fonctionnalités au rôle d'administrateur:
// Add caps for Administrator role
$role =& get_role('administrator');
// external roles capabilities
$role->add_cap('edit_external_role');
$role->add_cap('read_external_role');
$role->add_cap('delete_external_role');
Cependant, cela ne fait pas l'affaire.
Quelle est la manière correcte et concise d’ajouter toutes les capacités d’un rôle de gestion d’un CPT?
Merci beaucoup, Dasha
MODIFIER
J'utilise le hook init
dans le functions.php
pour ajouter des majuscules au rôle admin:
add_action( 'init', 'my_custom_roles_capabilities', 0 );
function my_custom_roles_capabilities(){
// Add caps for Administrator role
$role =& get_role('administrator');
// external roles capabilities
$role->add_cap('edit_external_role');
$role->add_cap('read_external_role');
$role->add_cap('delete_external_role');
}
Avez-vous essayé de définir les fonctionnalités de la fonction external_roles_post_type_init ()?
Après le
'capability_type' => array('external_role', 'external_roles'),
essayez d'ajouter ceci
'capabilities' => array(
'publish_posts' => 'publish_external_roles',
'edit_posts' => 'edit_external_roles',
'edit_others_posts' => 'edit_others_external_roles',
'delete_posts' => 'delete_external_roles',
'delete_others_posts' => 'delete_others_external_roles',
'read_private_posts' => 'read_private_external_roles',
'edit_post' => 'edit_external_role',
'delete_post' => 'delete_external_role',
'read_post' => 'read_external_role',
),
comme autre argument du tableau $ args
Ensuite, avant d'appliquer la fonctionnalité à tel ou tel rôle, vous pouvez essayer d'installer Plug-in de l'éditeur de rôle utilisateur rechercher si les fonctionnalités sont vraiment existantes. aux rôles. Je sais que ce n'est pas comme coder, mais en réalité, la possibilité de donner et de révoquer d'un clic dans le panneau d'administration est vraiment pratique.
Je vous dis cela, car parfois (très souvent en fait), j'enregistre des types de publication personnalisés avec la même méthode que vous utilisez (plus le tableau de fonctionnalités que j'ai collé ci-dessus), mais pour une raison quelconque, les fonctionnalités ne sont pas réellement créées. Parfois, je résous simplement en déplaçant la fonction d’enregistrement en position haute dans le fichier functions.php. Il me semble que c’est aussi un wichcraft, mais parfois ça marche.
Lorsque je me trouve dans un tel chemin, la seule solution que je puisse trouver consiste à utiliser à la fois Editeur de rôle utilisateur et Map Cap plugins. Je n'aime pas ça, mais c'est mieux que de perdre la tête.
J'espère que cela vous aide, même si cela ne résout pas le problème de "confusion" que je partage avec vous.