Autoriser l'utilisateur à éditer les messages mais pas Ajouter un nouveau?
-
16-10-2019 - |
Question
Pour un de mes types de postes personnalisés Je veux un utilisateur spécifique pour pouvoir éditer les messages existants créés par l'administrateur mais pas pouvoir ajouter de nouveaux messages.
Comment cela peut-il être fait?
Si je définit le rôle de l'utilisateur de ne pas être en mesure de le publier leur permet encore d'ajouter un nouveau poste et soumettre à l'examen.
La solution
Vous devrez faire quelque chose comme ceci:
function hide_buttons() {
global $current_screen;
if($current_screen->id == 'edit-post' && !current_user_can('publish_posts')) {
echo '<style>.add-new-h2{display: none;}</style>';
}
}
add_action('admin_head','hide_buttons');
Voir: http://erisds.co.uk/wordpress/spotlight-wordpress-admin-menu-remove-add-new-pages-or-posts-link de référence
Autres conseils
La réponse précédente ne cache que l'élément de menu avec CSS, et comme @ezejielDFM souligne, il ne sera pas empêcher les utilisateurs de en fait pouvoir ajouter les messages.
Au lieu de cela, lors de l'enregistrement de votre type de poste personnalisé, vous devez définir la valeur de create_posts
à do_not_allow
(ou false
dans les versions de Wordpress 4.5 ci-dessous) et définir la manière cruciale map_meta_cap
à true
.
register_post_type( 'custom_post_type_name', array(
'capability_type' => 'post',
'capabilities' => array(
'create_posts' => 'do_not_allow', // Prior to Wordpress 4.5, this was false
),
'map_meta_cap' => true, // With this set to true, users will still be able to edit & delete posts
));
Si map_meta_cap
est omis, la valeur par défaut de false
et même si vous avez désactivé la possibilité de Ajouter messages, vous aussi ne sera pas en mesure de modifier ou de supprimer ceux qui existent déjà soit, alors assurez-vous Assurez-vous d'inclure cette valeur.
Crédit complet va cette réponse sur débordement de la pile.