Je dois créer un rôle d'utilisateur personnalisé qui sera capable de créer des publications (d'un type de publication spécifique) mais pas de les publier (tout comme le rôle actuel de contributor .
Je suis un peu confus sur la façon de créer un nouveau rôle ou capacité pour y parvenir. Comment/où dois-je commencer?
Merci
UPDATE: J'ai ajouté ces éléments à la fonction de publication personnalisée, comme suggéré par Eric Holmes.
'capabilities' => array(
'edit_posts' => 'edit_helps',
'edit_post' => 'edit_help',
'read_post' => 'read_helps',
),
Ajout de ceux-ci au hook d'activation du plugin et à l'opposé du hook de désactivation (je modifie le rôle de contributeur lui-même):
function modify_user_capabilities() {
$role = get_role( 'contributor' );
$role->remove_cap( 'delete_posts' );
$role->remove_cap( 'edit_posts' );
$role->add_cap('edit_helps');
$role->add_cap('edit_help');
$role->add_cap('read_helps');
}
register_activation_hook( __FILE__, 'modify_user_capabilities' );
Maintenant, seul le contributeur peut éditer ce type de message, pas les autres utilisateurs (par exemple, administrateur)
Existe-t-il un meilleur moyen de leur attribuer ces fonctionnalités par lots? J'ai modifié mon crochet d'activation pour:
function modify_user_capabilities() {
$role = get_role( 'contributor' );
$role->remove_cap( 'delete_posts' );
$role->remove_cap( 'edit_posts' );
foreach (array('administrator', 'editor', 'author', 'contributor') as $user_role) {
$role = get_role($user_role);
$role->add_cap('edit_helps');
$role->add_cap('edit_help');
$role->add_cap('read_helps');
}
}
UPDATE 2: J'ai totalement oublié d'affecter quelqu'un à la suppression des publications. J'ai donc mis à jour la fonction:
function modify_user_capabilities() {
//remove the contributor from editing any post
$role = get_role( 'contributor' );
$role->remove_cap( 'delete_posts' );
$role->remove_cap( 'edit_posts' );
foreach (array('administrator', 'editor', 'author', 'contributor') as $user_role) {
$role = get_role($user_role);
$role->add_cap('edit_helps');
$role->add_cap('edit_help');
$role->add_cap('read_helps');
}
//let admins delete posts
$role = get_role('administrator');
$role->add_cap('delete_helps');
$role->add_cap('delete_publised_helps');
$role->add_cap('delete_others_helps');
$role->add_cap('delete_help');
}
Maintenant, l'administrateur peut supprimer ces publications.
Ajouter un rôle est très simple. La création de fonctionnalités personnalisées est un peu plus compliqué. Lorsque vous enregistrez votre type de message personnalisé , vous définissez vos capacités pour celui-ci. Il s'agit essentiellement d'un tableau de "que voulez-vous compter comme ceci?". Mon exemple ci-dessous clarifiera cette affirmation.
$caps = array(
'edit_post' => 'edit_cpt_name',
'edit_posts' => 'edit_cpt_names',
'manage_posts' => 'manage_cpt_names',
'publish_posts' => 'publish_cpt_names',
'edit_others_posts' => 'edit_others_cpt_names',
'delete_posts' => 'delete_cpt_names'
);
Donc, vous devriez évidemment remplacer "cpt_name" par le slug de votre type de message personnalisé (ou tout ce que vous voulez vraiment). Les éléments à gauche sont les noms de capacités par défaut (il y en a plus, référez-vous à l'entrée register_post_type dans le codex). Quelles que soient les fonctionnalités que vous déclarez dans votre enregistrement de type de publication personnalisé, vous devez également attribuer au rôle d'utilisateur ces fonctionnalités:
add_role('basic_contributor', 'Basic Contributor', array(
'read' => true,
'edit_posts' => false,
'edit_cpt_name' => true, // True allows that capability
'edit_cpt_names' => true,
'publish_cpt_names' => true,
'edit_others_cpt_names' => false, // Use false to explicitly deny
'delete_cpt_names' => false
));