web-dev-qa-db-fra.com

Capacité de l'utilisateur de créer une page/nouvelle page

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:

  1. Autoriser l'utilisateur à créer une nouvelle page
  2. Autoriser l'utilisateur à éditer des pages existantes

J'essaie de scinder cette capacité en deux. Je veux que mon utilisateur:

  1. Ne pas pouvoir créer de nouvelles pages
  2. Autoriser l'utilisateur à éditer des pages existantes

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é.

2
Scott

Oui, c'est effectivement un problème. Une fonctionnalité 'create_posts' dédiée est prévue:

http://core.trac.wordpress.org/ticket/16714

1
scribu

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

0
Ackab