Par défaut, j'autorise les personnes à s'abonner en tant que contributeurs à mon site, ce qui leur permet certaines actions.
Ce que je veux alors faire est de supprimer les publications, les commentaires, les contacts (ContactForm7) et les outils en ne leur laissant que des options pour ajouter de nouveaux événements (plug-in d'événements).
Je veux aussi être sûr que même si ces boutons sont cachés, les gens ne peuvent pas soumettre ces PostTypes s'ils savent comment faire.
Je suis en train de lire le livre de développement de plugins WordPress professionnels en ce moment et c'est beaucoup à prendre, j'aimerais donc le faire uniquement dans la page des fonctions de mon thème pour le moment.
Voici ce que j'essaye selon le codex:
add_action( 'admin_menu', 'jh_remove_menu_pages' );
function jh_remove_menu_pages() {
remove_menu_page('edit-comments.php');
remove_menu_page('tools.php');
remove_menu_page('edit.php');
remove_menu_page('wp-contact-form-7.php');
}
J'ai réussi à trouver sur cette page pour supprimer tous les fichiers php que je dois cacher mais je ne suis pas sûr du fichier ContactForm7. EDIT: Gestion de la recherche de la solution ici pour supprimer le formulaire de contact 7 du menu Admin
Toutefois, selon le codex, le code ci-dessus ne supprime pas les autorisations permettant aux utilisateurs d'accéder directement aux écrans (publications, outils, etc.) et de les soumettre s'ils savaient comment:"Sachez que cela n'empêcherait pas l'utilisateur d'accéder directement à ces écrans. La suppression d'un menu ne remplace pas la nécessité de filtrer les autorisations d'un utilisateur, selon le cas. "
Comment pourrais-je supprimer les fonctionnalités de tout ce qui précède, à l'exception des événements et Profil? Je suis en train de lire remove_cap dans le codex, mais je crains de pouvoir par inadvertance désactiver l'affichage d'événements si je supprime la fonctionnalité Posts?
Et enfin, comment puis-je afficher uniquement les événements associés pour l'utilisateur qui est connecté à ce moment-là?
Merci beaucoup.
Dans votre cas, la meilleure solution consiste à créer votre propre rôle custm et à ne leur attribuer que les fonctionnalités dont vos utilisateurs ont besoin. En ce qui concerne wordpress, d'après ce que je peux comprendre de votre question, la seule possibilité que vous devriez leur donner est read
.
De cette façon, ils ne verront que le profil. Les problèmes commencent avec le plugin, vous ne dites pas (ou je ne comprends pas) quel est le plugin que vous utilisez, je ne peux donc pas vous donner une meilleure aide.
Considérez que beaucoup dépend du codage du plug-in: s'il vérifie certaines fonctionnalités standard, par exemple. vous trouvez dans le code quelque chose comme
if ( currrent_user_can('edit_posts') ) { // do stuff
cela signifie que pour que cela fonctionne, vous devez attribuer la limite edit_posts
à votre rôle. Mais c'est un problème: si vous attribuez cette capacité, le menu Post
de l'administrateur sera affiché. Bien sûr, vous pouvez supprimer cela en utilisant remove_menu_page
, mais comme vous l'avez dit en question, cela n'empêche pas les utilisateurs d'accéder directement à ces écrans d'administration s'ils savent comment procéder.
Donc, ce que je vous suggère est:
read
remove_menu_page
load-{$page}
et empêcher l'accès à votre rôle personnalisé.Settings -> General
et transformez 'Rôle personnalisé' en Nouveau rôle par défaut de l'utilisateur $subscriber = get_role( 'subscriber');
$plugin_caps = array('edit_posts', 'cap_required_by_event_plugin');
$all_caps = array_merge($subscriber->capabilities, $plugin_caps);
add_role('custom_role', 'Custom Role', $all_caps );
Regardez la documentation du plugin. Effectuez une recherche de plusieurs fichiers dans le dossier plugins en recherchant des mots clés tels que 'current_user_can'
, 'user_can'
, 'has_cap'
. Si vous avez un problème, essayez de demander sur le forum de support du plugin (s'il existe), demandez ici et recherchez-le sur Google. Le développeur est et travaille dur! ;)
Le moyen le plus simple consiste simplement à ajouter la limite requise au tableau $plugin_caps
défini au point 1).
En supposant que vous deviez ajouter la limite edit_posts
à votre rôle pour que le plug-in d'événement fonctionne. Tout d'abord supprimer le menu.
add_action( 'admin_menu', 'custom_remove_menu_pages' );
function custom_remove_menu_pages() {
$user = wp_get_current_user();
if ( in_array('custom_role', $user->roles) ) {
remove_menu_page('edit-comments.php');
remove_menu_page('tools.php');
remove_menu_page('edit.php');
}
}
Puis empêchez l'accès:
add_action( 'load-edit.php', 'custom_prevent_admin_access' );
add_action( 'load-tools.php', 'custom_prevent_admin_access' );
add_action( 'load-post.php', 'custom_prevent_admin_access' );
add_action( 'load-post-new.php', 'custom_prevent_admin_access' );
function custom_prevent_admin_access() {
$user = wp_get_current_user();
if ( in_array('custom_role', $user->roles) ) {
wp_die("Sorry, you can't stay here.");
exit();
}
}
C'est tout, espérons que cela aide.