Est-il possible de masquer l'interface utilisateur / menu de type de message personnalisé à des rôles d'utilisateur spécifiques?
6 réponses
- votes
-
- 2011-09-17
Pourmasquer un élément demenu detype depublication aux utilisateursnon administrateurs:
function wpse28782_remove_menu_items() { if( !current_user_can( 'administrator' ) ): remove_menu_page( 'edit.php?post_type=your_post_type' ); endif; } add_action( 'admin_menu', 'wpse28782_remove_menu_items' );
your_post_type
doit être lenom de votretype demessage actuel.< EDIT-
autrespages demenu que vouspouvez supprimer:
remove_menu_page('edit.php'); // Posts remove_menu_page('upload.php'); // Media remove_menu_page('link-manager.php'); // Links remove_menu_page('edit-comments.php'); // Comments remove_menu_page('edit.php?post_type=page'); // Pages remove_menu_page('plugins.php'); // Plugins remove_menu_page('themes.php'); // Appearance remove_menu_page('users.php'); // Users remove_menu_page('tools.php'); // Tools remove_menu_page('options-general.php'); // Settings
MODIFIER 2 -
Suppression des éléments demenu duplug-in.
Pour lesplugins,il semble que vousn'ayezbesoin que de la requête
page=
var. L'autre chose ànoterest lapriorité,quiest letroisième argument duadmin_menu
add_action
. Il doit être réglé suffisammentbas (plus lenombreest élevé,plus laprioritéestbasse)pour que lesplugins se soient déjà ajoutés aumenu.function wpse28782_remove_plugin_admin_menu() { if( !current_user_can( 'administrator' ) ): remove_menu_page('cart66_admin'); endif; } add_action( 'admin_menu', 'wpse28782_remove_plugin_admin_menu', 9999 );
To hide a post type menu item from non-admin users:
function wpse28782_remove_menu_items() { if( !current_user_can( 'administrator' ) ): remove_menu_page( 'edit.php?post_type=your_post_type' ); endif; } add_action( 'admin_menu', 'wpse28782_remove_menu_items' );
your_post_type
should be the name of your actual post type.EDIT-
other menu pages you can remove:
remove_menu_page('edit.php'); // Posts remove_menu_page('upload.php'); // Media remove_menu_page('link-manager.php'); // Links remove_menu_page('edit-comments.php'); // Comments remove_menu_page('edit.php?post_type=page'); // Pages remove_menu_page('plugins.php'); // Plugins remove_menu_page('themes.php'); // Appearance remove_menu_page('users.php'); // Users remove_menu_page('tools.php'); // Tools remove_menu_page('options-general.php'); // Settings
EDIT 2 -
Removing plugin menu items.
For plugins, it seems you only need the
page=
query var. The other thing to note is the priority, which is the third argument to theadmin_menu
add_action
. It has to be set low enough (the higher the number, the lower the priority) so that plugins have already added themselves to the menu.function wpse28782_remove_plugin_admin_menu() { if( !current_user_can( 'administrator' ) ): remove_menu_page('cart66_admin'); endif; } add_action( 'admin_menu', 'wpse28782_remove_plugin_admin_menu', 9999 );
-
Une solution si simple,merci,elle aparfaitementfonctionné!Such a simple solution, thank you it worked perfectly!
- 0
- 2011-09-17
- Mr.Brown
-
Curieux,est-ce que `wpse28782_remove_menu_items`est unnom defonction que vous avez choisi au hasard ouest-ce spécifique à WP? .... Aussi,commentpourrais-je développer cetteidéeet cibler des CPT supplémentaires,ou d'ailleurs d'autresmenus WPnatifs?Merciencorepour votre aide!Curious, is `wpse28782_remove_menu_items` a function name you chose at random or is this specific to WP?....Also, how would I go about expanding on this idea and targeting additional CPT's, or for that matter other native WP menu's? Thanks again for the help!
- 0
- 2011-09-17
- Mr.Brown
-
@ Mr.Brown - lenom de lafonctionestbasé sur l'id de votre question (vérifiez l'url),juste quelque chose quiestgaranti unique,vouspouvez lenommer comme vous le souhaiteztant que cen'estpas unefonctionexistante.vouspouvez également ajouter des appels supplémentaires `remove_menu_page`pour supprimer d'autres CPT,ainsi que d'autres éléments demenu,voirmamodification.@Mr.Brown - the function name is based on the id of your question (check the url), just something guaranteed to be unique, you can name it whatever you'd like as long as it's not an existing function. you can also add additional `remove_menu_page` calls to remove other CPTs, as well as other menu items, see my edit.
- 1
- 2011-09-17
- Milo
-
Tellementgénial,merciencore.C'est une solutionincroyable.So awesome, thanks again. This is an amazing solution.
- 0
- 2011-09-17
- Mr.Brown
-
Juste une dernière chose - commentpuis-jetrouver lenom dumodèle utilisépour lesmenus supplémentaires desplugins actuellementinstallés?c'est à dire.`remove_menu_page ('plugin depanier');`Just one last thing - how do I go about finding the template name thats used for additional menu's from plugins that are currently installed? ie. `remove_menu_page('cart_plugin');`
- 0
- 2011-09-17
- Mr.Brown
-
J'aiessayé de survoler l'élément demenuet d'utiliser le chemin qu'ilm'a donnémaispas de dés,il apparaîttoujours,bien que les autres éléments demenu soientexactement reflétés lorsque vous les survolez de lamêmemanière que votreexemple ... J'utilise leplugin cart66et c'est ce qu'était le chemin lorsqueje l'ai survolé `remove_menu_page ('admin.php?page=cart66_admin');` -ne semblaitpasfonctionner cependant.I tried hovering over the menu item and using the path that it gave me but no dice, it still shows up, though the other menu items are exactly reflected when you hover over them the same as your example...Im using the cart66 plugin and this is what the path was when I hovered over it `remove_menu_page( 'admin.php?page=cart66_admin' );` - didnt seem to work though.
- 0
- 2011-09-17
- Mr.Brown
-
@ Mr.Brown - voir lamodification ci-dessus.@Mr.Brown - see the edit above.
- 0
- 2011-09-17
- Milo
-
Incroyable,vous avez étéextrêmement utile.Alors,est-ce quetous lesplugins ontjustebesoin du dernierbit du cheminet non `page=`je leprends?Amazing, you have been extremely helpful. So do all plugins just need the last bit of the path then and not `page=` I take it?
- 0
- 2011-09-18
- Mr.Brown
-
@ Mr.Brown - Je crois que oui,dumoins les quelques-uns quej'ai regardés.Àtitre detest,dans votrefonction `admin_menu`,vouspouvez ajouter`global $menu; `puis`print_r ($menu); `,ce qui révélera letableau àpartir duquel lemenuest construit (afficher la source de lapage,ou l'envelopper dans un`
`pour unemeilleure lisibilité).L'élément avec unindex de 2 dans chaque sous-tableau demenuest ce que vous voulez utiliser avec `remove_menu_page`
@Mr.Brown - I believe so, at least the few I've looked at. As a test, within your `admin_menu` function you can add `global $menu;` then `print_r( $menu );`, which will reveal the array the menu is built from (view page source, or wrap it in a `` tag for better readability). The element with index of 2 in each menu sub-array is what you want to use with `remove_menu_page`
- 0
- 2011-09-18
- Milo
-
Milo -merci un homme! ... ceforumesttoujoursfantastique,mais vousmonsieurm'avez vraiment aidé à apprendre quelque chosepour unefois,alorsmercipour votrepatienceet avoirpris letemps detoutpréciserpour un débutant commemoi!Meilleur,SB.Milo - thanks a ton man!...this forum is always fantastic, but you sir have helped me really learn something for once, so thank you for your patience and taking the time to spell everything out for a beginner like me! Best, SB.
- 0
- 2011-09-18
- Mr.Brown
-
Notez que cette solution supprime lemenu,maisn'empêchepas l'utilisateur d'accéder à cespagespar URL.Note that this solution removes the menu, but doesn't prevent the user to access those pages by url.
- 0
- 2014-01-19
- MZAweb
-
@MZAweb - vrai,mais si vous lisez la question,cen'estpas ce qui a été demandé.Lapossibilité d'accéder auxpages était déjàgérée via desfonctionnalités.@MZAweb - true, but if you read the question, that wasn't what was asked. The ability to access the pages was already handled via capabilities.
- 0
- 2014-01-19
- Milo
-
Excellente réponse,afonctionné un charme ...merci d'avoir égalementinclus commentmasquer des éléments autres que les CPT.Excellent answer, worked a charm... thankyou for also including how to hide elements other then CPT's.
- 0
- 2016-01-19
- Simon
-
Qu'enest-il de la suppression du `Nouveau> Message|Médias|Page|CPT »?Cela ajustebesoin du hook `admin_bar_menu` - https://wordpress.stackexchange.com/a/76647/84219What about removing the `New > Post | Media | Page | CPT`? That just needs the `admin_bar_menu` hook - https://wordpress.stackexchange.com/a/76647/84219
- 0
- 2018-09-19
- jgraup
-
- 2018-10-15
La réponse acceptéepeut être utiliséepourmasquer lestypes depublicationpersonnalisés (et d'autres éléments assortis) comme décrit.Mais si vous souhaitezmasquer lemenu duplug-in CPT UI lui-même,vouspouvez également supprimer l'action qui l'ajoute aumenuen premier lieu.
if( !current_user_can( 'administrator' ) ) { remove_action( 'admin_menu', 'cptui_plugin_menu' ); }
The accepted answer can be used to hide custom post types (and other assorted items) as described. But if you want to hide the CPT UI plugin menu itself, you can also remove the action that adds it to the menu in the first place.
if( !current_user_can( 'administrator' ) ) { remove_action( 'admin_menu', 'cptui_plugin_menu' ); }
-
- 2013-01-11
Vouspouvez également utiliser leplugin Adminimize .Ceplugin a des optionspourtous lestypes demessages,desméta-boîteset bien d'autres à cacher sur différents rôles.Pas de codage.
You can also use the Adminimize plugin. This plugin have options for all post types, meta boxes and many more to hide on different roles. No coding.
-
- 2018-12-20
Si vous souhaitezmasquer lemenu de ceplugin dont lenomest "Custom Post Type UI" a.k.a CPTUI,cen'estpaspossibleen combinant lepremier lien avec remove_menu_page.
Tout ce que vous avez àfaireest;
function wpse_28782_remove_menus() { remove_menu_page('cptui_main_menu'); } add_action('admin_init', 'wpse_28782_remove_menus');
If you want to hide that plugin's menu which name is "Custom Post Type UI" a.k.a CPTUI, it is not possible with combining first link with remove_menu_page.
All you have to do is ;
function wpse_28782_remove_menus() { remove_menu_page('cptui_main_menu'); } add_action('admin_init', 'wpse_28782_remove_menus');
-
- 2019-04-23
Pourmasquer les sous-menus de Woocommerce sous lemenu deniveau supérieur "Produits"pourtous les rôles d'utilisateur de Shop Manager (Wordpress 5.1.1):
function remove_menus_shopmgr(){ // If the current user is a shop manager if ( current_user_can('shop_manager') ) { //removes Products > Categories submenu remove_submenu_page( 'edit.php?post_type=product','edit-tags.php?taxonomy=product_cat&post_type=product' ); //removes Products > Tags submenu remove_submenu_page( 'edit.php?post_type=product','edit-tags.php?taxonomy=product_tag&post_type=product' ); } } add_action( 'admin_menu', 'remove_menus_shopmgr', 999 );
To hide Woocommerce submenus under the top-level menu "Products" for all Shop Manager user roles (Wordpress 5.1.1):
function remove_menus_shopmgr(){ // If the current user is a shop manager if ( current_user_can('shop_manager') ) { //removes Products > Categories submenu remove_submenu_page( 'edit.php?post_type=product','edit-tags.php?taxonomy=product_cat&post_type=product' ); //removes Products > Tags submenu remove_submenu_page( 'edit.php?post_type=product','edit-tags.php?taxonomy=product_tag&post_type=product' ); } } add_action( 'admin_menu', 'remove_menus_shopmgr', 999 );
-
- 2019-09-11
Si
remove_menu_page
ne fonctionnepaspour vous (cen'estpas le caspourmoi),au lieu de supprimer lemenu,une alternativeest de dire à WordPress dene pas afficher lemenupour letype demessage:function wpse28782_hide_menu_items() { if( !current_user_can( 'administrator' ) ) { $post_type = get_post_type_object( 'your_post_type'); if ($post_type) { $post_type->show_in_menu = false; } } } add_action( 'admin_menu', 'wpse28782_hide_menu_items', 99 );
If
remove_menu_page
doesn't work for you (it didn't for me) then instead of removing the menu, an alternative is to tell WordPress not to show the menu for the post type:function wpse28782_hide_menu_items() { if( !current_user_can( 'administrator' ) ) { $post_type = get_post_type_object( 'your_post_type'); if ($post_type) { $post_type->show_in_menu = false; } } } add_action( 'admin_menu', 'wpse28782_hide_menu_items', 99 );
Ce queje cherche àfaireest demasquer complètement l'interface utilisateurpour untype depublicationpersonnalisé à des rôles d'utilisateurs spécifiques ... J'ai déjàtrouvé denombreuses ressources sur lafaçon de désactiver l'accès à l'utilisation de ces CPT,mais rien qui vouspermet vraiment demasquer complètementl'interface utilisateur du CPTen fonction de l'utilisateur connecté autableau debord.
Ceciestimportant carj'aibesoin que les clients restent complètementen dehors destypes depublicationpersonnaliséspour lemagasin,et s'ilspeuvent voir l'interface utilisateur CPT dumagasin dans letableau debord,celane faitpas de différence si leurs capacités sont limitées depuis leurva demander commentilspeuventprocédereux-mêmespour ajouter unproduit.
Jepréfère vraimentne pas accomplir cela avec unplugin,mais s'il y a quelque chose quipeutfaire l'affaire d'unemanièrenongonflée,ce seraittoujoursgénial,je suppose.
Mercipour votre aide, SB