Je travaille avec l'API Role and Capabilities pour la première fois aujourd'hui et je profite de l'excellent plugin Members . Après avoir bricolé pendant un certain temps, j'ai remarqué que la fonctionnalité "modifier des pages" remplissait deux fonctions:
J'essaie de scinder cette capacité en deux. Je veux que mon utilisateur:
Je cherche à écrire du code pour mon thème qui permette que cela se produise. Je peux créer une nouvelle capacité très facilement. Le défi consiste alors à faire en sorte que WordPress réponde en conséquence.
Toute réflexion sera apprécié.
Oui, c'est effectivement un problème. Une fonctionnalité 'create_posts' dédiée est prévue:
Bonjour, je fais des recherches à ce sujet depuis un certain temps, j'ai proposé le hack suivant. Dans wp-admin/new_post.php, ajoutez ce qui suit après la ligne wp_die:
wp_die( __('Invalid post type') );
if ( !current_user_can( 'manage_options' ) and $post_type == 'page') {
echo "To create new pages please ask site admin";
exit;
} //if user is not admin, a warning is issued and script terminated
puis dans wp-admin/menu, ajoutez une condition pour afficher le sous-menu add page dans admin. La ligne est normalement présente mais non incluse dans la déclaration if
if ( current_user_can( 'manage_options' )) { //if user is admin, show submenu for creating new pages, else no luck
$submenu['edit.php?post_type=page'][10] = array( _x('Add New', 'page'), get_post_type_object( 'page' )->cap->create_posts, 'post-new.php?post_type=page' );
}
Il me reste à comprendre comment supprimer le bouton Ajouter un nouveau dans les pages de modification. Toutefois, les utilisateurs disposant de droits de publication peuvent désormais modifier les pages existantes mais pas en créer de nouvelles. S'ils appuient sur le bouton Nouvelle page, ils reçoivent un avertissement et ne peuvent pas continuer. Les messages ne sont pas affectés. Le même code pourrait facilement être appliqué pour empêcher la création de nouveaux postes ainsi qu'avec juste quelques modifications.
J'espère que cela aide - Ackab