Come rimuovere le pagine del menu di amministrazione inserite dai plugin?
-
-
Potrebbeessere stupido chiederlo,maperché hackerareilmenu di amministrazione,quandopotresti disattivarei pluginin questione?May be Stupid to ask, but why hack the admin menu, when you could deactivate the plugins in question?
- 0
- 2014-05-23
- eyoung100
-
@eyoung100 Ci sono diversimotivi.Ilpiùevidente sarebbe _nascondere_ determinatefunzionalità da utenti (ruoli) specifici.Sipotrebbe anche voler ristrutturareilmenu di amministrazionee quindi dover rimuovere (e aggiungere dinuovo) alcune voci dimenu.@eyoung100 There are several reasons. The most apparent one would be to _hide_ certain functionality from specific user( role)s. Also one might want to restructure the admin menu, and thus need to remove (and add back again) certain menu entries.
- 5
- 2014-10-23
- tfrommen
-
Se si utilizza una soluzionetramite codifica,unplug-in è un aiutonel contesto,comeilplug-in "Adminimize".L'elenco deiplug-ininclude anchegli slug che ènecessario rimuoveretramite codicepersonalizzato se leimpostazioni delplug-innon sono richieste.If you would use a solution via coding, a plugin is a helper in context, like the plugin 'Adminimize'. The plugin list also the slugs there are necessary to remove via custom code if the settings of the plugin is not your requirement.
- 0
- 2019-05-22
- bueltge
-
7 risposta
- voti
-
- 2014-02-26
Devi usaregli hook corretti (chenon sono sempregli stessi degli URL/slug)e nonfamale usare un hook che vieneeseguitoin seguito (adesempio,
admin_init
):add_action( 'admin_init', 'wpse_136058_remove_menu_pages' ); function wpse_136058_remove_menu_pages() { remove_menu_page( 'edit.php?post_type=acf' ); remove_menu_page( 'wpcf7' ); }
Èpossibile utilizzare quanto seguepereseguireil debug:
add_action( 'admin_init', 'wpse_136058_debug_admin_menu' ); function wpse_136058_debug_admin_menu() { echo '<pre>' . print_r( $GLOBALS[ 'menu' ], TRUE) . '</pre>'; }
Questofornisce (per lamia configurazione) quanto segueper lapagina delmenu delplugin Contact Form 7:
[27] => Array ( [0] => Formular [1] => wpcf7_read_contact_forms [2] => wpcf7 [3] => Contact Form 7 [4] => menu-top menu-icon-generic toplevel_page_wpcf7 menu-top-last [5] => toplevel_page_wpcf7 [6] => none )
L'elemento array con chiave
2
è quello che stai cercando:wpcf7
.You need to use the right hooks (which are not always the same as the URLs/slugs), and it doesn't hurt to use a hook that runs later (e.g.,
admin_init
):add_action( 'admin_init', 'wpse_136058_remove_menu_pages' ); function wpse_136058_remove_menu_pages() { remove_menu_page( 'edit.php?post_type=acf' ); remove_menu_page( 'wpcf7' ); }
You can use the following to debug:
add_action( 'admin_init', 'wpse_136058_debug_admin_menu' ); function wpse_136058_debug_admin_menu() { echo '<pre>' . print_r( $GLOBALS[ 'menu' ], TRUE) . '</pre>'; }
This gives (for my setup) the following for the Contact Form 7 plugin menu page:
[27] => Array ( [0] => Formular [1] => wpcf7_read_contact_forms [2] => wpcf7 [3] => Contact Form 7 [4] => menu-top menu-icon-generic toplevel_page_wpcf7 menu-top-last [5] => toplevel_page_wpcf7 [6] => none )
The array element with key
2
is what you are looking for:wpcf7
.-
Mostrare come scaricareilmenue trovare cosa usareper `remove_menu_page ()` è stato digrande aiuto -mi hainsegnato apescareinvece diporgermiilpesce!Showing how to dump the menu and find what to use for `remove_menu_page()` was a huge help -- taught me how to fish instead of just handing me the fish!
- 6
- 2016-06-20
- Matthew Clark
-
Per acf c'è un approcciomigliore vedere [la documentazione] (https://www.advancedcustomfields.com/resources/how-to-hide-acf-menu-from-clients/)For acf there is a better approach see [the docs](https://www.advancedcustomfields.com/resources/how-to-hide-acf-menu-from-clients/)
- 0
- 2017-02-12
- hitautodestruct
-
Il codice di debug è digrande aiuto.Graziemilleper la condivisione!The debug code is of great help. Thanks a ton for sharing!
- 0
- 2019-07-14
- Devner
-
- 2014-02-26
Probabilmente dovraiimpostare la priorità di add_action su unnumeropiù altoe scegliere cometarget questi duenuovi linkin modo specifico :
add_action( 'admin_menu', 'my_remove_menu_pages', 999 ); function my_remove_menu_pages() { remove_menu_page( 'edit.php' ); //Posts remove_menu_page( 'upload.php' ); //Media remove_menu_page( 'edit-comments.php' ); //Comments 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 remove_menu_page( 'edit.php?post_type=acf' ); remove_menu_page( 'wpcf7' ); };
Campipersonalizzati avanzatifornisce anche un documento di aiuto su comeeseguire questa operazioneperil loromenu qui:
http://www.advancedcustomfields.com/risorse/how-to/how-to-hide-acf-menu-from-clients/
Contact Form 7 ha ancheil suomodo di limitare la visibilità delmenu:
http://contactform7.com/restricting-access-to-the-administration-panel/
You probably need to set the add_action priority to a higher number and target those two new links specifically like so:
add_action( 'admin_menu', 'my_remove_menu_pages', 999 ); function my_remove_menu_pages() { remove_menu_page( 'edit.php' ); //Posts remove_menu_page( 'upload.php' ); //Media remove_menu_page( 'edit-comments.php' ); //Comments 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 remove_menu_page( 'edit.php?post_type=acf' ); remove_menu_page( 'wpcf7' ); };
Advanced Custom Fields also provides a help document on how to do this for their menu here:
http://www.advancedcustomfields.com/resources/how-to/how-to-hide-acf-menu-from-clients/
Contact Form 7 also has it's own way of restricting the visibility of the menu:
http://contactform7.com/restricting-access-to-the-administration-panel/
-
nascondere contactform7 hafunzionatoperme usando `remove_menu_page ('wpcf7');`hiding contactform7 worked for me by using `remove_menu_page( 'wpcf7' );`
- 0
- 2016-06-08
- Abel Melquiades Callejo
-
- 2014-08-25
// PLUGINS THAT ADD AS DASHBOARD SUBMENU // IF THIS IS THE URL BELOW - THE PAGE VARIABLE IS WHAT I NEED ( SO WHATEVER COMES AFTER PAGE= ) // http://example.com/wp-admin/index.php?page=iconize-plugin-update-notifier remove_submenu_page( 'index.php', 'iconize-plugin-update-notifier' ); // OR FOR EXAMPLE WOOCOMMERCE DASHBOARD SUBMENU remove_submenu_page( 'index.php', 'wc-about' ); //WOO remove_submenu_page( 'index.php', 'wc-credits' ); //WOO remove_submenu_page( 'index.php', 'wc-translators' ); //WOO // CUSTOM POST TYPE TOP LEVELS remove_menu_page( 'edit.php?post_type={$POST_TYPE}' ); //LOOK FOR WHAT COMES AFTER POST TYPE IN THE URL remove_menu_page( 'edit.php?post_type=testimonials-widget' ); //TESTIMONIALS WIDGET remove_menu_page( 'edit.php?post_type=product' ); //WOOCOMMERCE // CUSTOM POST TYPE SUBMENU remove_submenu_page( 'edit.php?post_type={$POST_TYPE}', '{$SUBMENU_URL_VARIABLE}' ); //EXAMPLE FORMAT // SO IF BELOW IS THE URL // http://example.com/wp-admin/edit.php?post_type=testimonials-widget&page=testimonialswidget_settings // YOU NEED TO SEE WHATS AFTER PAGE remove_submenu_page( 'edit.php?post_type=testimonials-widget', 'testimonialswidget_settings' ); //TESTIMONIALS WIDGET // OTHER EXAMPLES remove_menu_page( 'revslider' ); // REVSLIDER remove_menu_page( 'woocommerce' ); // WOOCOMMERCE remove_menu_page( 'order-post-types-shop_order' ); // WOOCOMMERCE remove_menu_page( 'order-post-types-shop_coupons' ); // WOOCOMMERCE remove_menu_page( 'shortcodes-ultimate' ); // SHORTCODES ULTIMATE remove_menu_page( 'wp-admin-microblog/wp-admin-microblog.php' ); // ADMIN MICROBLOG remove_menu_page( 'snippets' ); //CODE SNIPPETS remove_menu_page( 'gf_edit_forms' ); // GRAVITY FORMS remove_submenu_page( 'gf_edit_forms', 'gf_settings' ); // GRAVITY FORMS remove_submenu_page( 'gf_edit_forms', 'gf_export' ); // GRAVITY FORMS remove_submenu_page( 'gf_edit_forms', 'gf_update' ); // GRAVITY FORMS remove_submenu_page( 'gf_edit_forms', 'gf_addons' ); // GRAVITY FORMS remove_submenu_page( 'gf_edit_forms', 'gf_help' ); // GRAVITY FORMS remove_submenu_page( 'cleverness-to-do-list', 'cleverness-to-do-list-settings' ); //Cleverness TODO
PUOI DEBUGARE TUTTO QUESTO CON QUANTO SEGUE PER OTTENERE TUTTE LE INFORMAZIONI CHE TI SERVONO:
if (!function_exists('debug_admin_menus')): function debug_admin_menus() { if ( !is_admin()) return; global $submenu, $menu, $pagenow; if ( current_user_can('manage_options') ) { // ONLY DO THIS FOR ADMIN if( $pagenow == 'index.php' ) { // PRINTS ON DASHBOARD echo '<pre>'; print_r( $menu ); echo '</pre>'; // TOP LEVEL MENUS echo '<pre>'; print_r( $submenu ); echo '</pre>'; // SUBMENUS } } } add_action( 'admin_notices', 'debug_admin_menus' ); endif;
Le chiaviti darannoi valori dell'array cheti permetteranno difaretutto questo con le variabiliglobali di wordpress (sebbenenon consigliato)
function remove_submenus_all_please() { if ( !is_admin()) return; global $submenu; unset($submenu['index.php'][10]); // Removes Updates //Posts menu // unset($submenu['edit.php'][5]); // Leads to listing of available posts to edit // unset($submenu['edit.php'][10]); // Add new post // unset($submenu['edit.php'][15]); // Remove categories // unset($submenu['edit.php'][16]); // Removes Post Tags } add_action('admin_menu', 'remove_submenus_all_please', 999);
Eper rimuovereper determinati utentibastafare la stessa cosatranne che con lefunzionalità aggiunte:
function remove_by_caps_admin_menu() { if ( !is_admin()) return; if ( !current_user_can('manage_options') ) { remove_menu_page( 'revslider' ); // REVSLIDER } elseif ( !current_user_can('edit_posts') ) { remove_menu_page( 'woocommerce' ); // WOO } else { } } add_action('admin_menu', 'remove_by_caps_admin_menu', 999);
E PER LEGARE TUTTO INSIEME PERCHÉ NON ABBREVIARE IL NOSTRO CODICE? PUOI USARE GLI ARRAY PER EVITARE LA SCRITTURA remove_submenu_page 50 volte. Funziona anche coni nodi dellabarra degli strumenti:
if ( !function_exists( 'remove_admin_menupages_in_array' ) ) { function remove_admin_menupages_in_array() { if ( !is_admin()) return; $admin_menus = array( 'revslider', 'woocommerce', 'shortcodes-ultimate', ); foreach ( $admin_menus as $menu_page ) { if ( !current_user_can('manage_options') ) { remove_menu_page( $menu_page ); } } // foreach } // function add_action('admin_menu', 'remove_admin_menupages_in_array', 9999); } // exists
// PLUGINS THAT ADD AS DASHBOARD SUBMENU // IF THIS IS THE URL BELOW - THE PAGE VARIABLE IS WHAT I NEED ( SO WHATEVER COMES AFTER PAGE= ) // http://example.com/wp-admin/index.php?page=iconize-plugin-update-notifier remove_submenu_page( 'index.php', 'iconize-plugin-update-notifier' ); // OR FOR EXAMPLE WOOCOMMERCE DASHBOARD SUBMENU remove_submenu_page( 'index.php', 'wc-about' ); //WOO remove_submenu_page( 'index.php', 'wc-credits' ); //WOO remove_submenu_page( 'index.php', 'wc-translators' ); //WOO // CUSTOM POST TYPE TOP LEVELS remove_menu_page( 'edit.php?post_type={$POST_TYPE}' ); //LOOK FOR WHAT COMES AFTER POST TYPE IN THE URL remove_menu_page( 'edit.php?post_type=testimonials-widget' ); //TESTIMONIALS WIDGET remove_menu_page( 'edit.php?post_type=product' ); //WOOCOMMERCE // CUSTOM POST TYPE SUBMENU remove_submenu_page( 'edit.php?post_type={$POST_TYPE}', '{$SUBMENU_URL_VARIABLE}' ); //EXAMPLE FORMAT // SO IF BELOW IS THE URL // http://example.com/wp-admin/edit.php?post_type=testimonials-widget&page=testimonialswidget_settings // YOU NEED TO SEE WHATS AFTER PAGE remove_submenu_page( 'edit.php?post_type=testimonials-widget', 'testimonialswidget_settings' ); //TESTIMONIALS WIDGET // OTHER EXAMPLES remove_menu_page( 'revslider' ); // REVSLIDER remove_menu_page( 'woocommerce' ); // WOOCOMMERCE remove_menu_page( 'order-post-types-shop_order' ); // WOOCOMMERCE remove_menu_page( 'order-post-types-shop_coupons' ); // WOOCOMMERCE remove_menu_page( 'shortcodes-ultimate' ); // SHORTCODES ULTIMATE remove_menu_page( 'wp-admin-microblog/wp-admin-microblog.php' ); // ADMIN MICROBLOG remove_menu_page( 'snippets' ); //CODE SNIPPETS remove_menu_page( 'gf_edit_forms' ); // GRAVITY FORMS remove_submenu_page( 'gf_edit_forms', 'gf_settings' ); // GRAVITY FORMS remove_submenu_page( 'gf_edit_forms', 'gf_export' ); // GRAVITY FORMS remove_submenu_page( 'gf_edit_forms', 'gf_update' ); // GRAVITY FORMS remove_submenu_page( 'gf_edit_forms', 'gf_addons' ); // GRAVITY FORMS remove_submenu_page( 'gf_edit_forms', 'gf_help' ); // GRAVITY FORMS remove_submenu_page( 'cleverness-to-do-list', 'cleverness-to-do-list-settings' ); //Cleverness TODO
YOU CAN DEBUG ALL THIS WITH THE FOLLOWING TO GET ALL THE INFO YOU NEED:
if (!function_exists('debug_admin_menus')): function debug_admin_menus() { if ( !is_admin()) return; global $submenu, $menu, $pagenow; if ( current_user_can('manage_options') ) { // ONLY DO THIS FOR ADMIN if( $pagenow == 'index.php' ) { // PRINTS ON DASHBOARD echo '<pre>'; print_r( $menu ); echo '</pre>'; // TOP LEVEL MENUS echo '<pre>'; print_r( $submenu ); echo '</pre>'; // SUBMENUS } } } add_action( 'admin_notices', 'debug_admin_menus' ); endif;
The keys will give you the array values that allow you do all of this with wordpress globals (although not recommended)
function remove_submenus_all_please() { if ( !is_admin()) return; global $submenu; unset($submenu['index.php'][10]); // Removes Updates //Posts menu // unset($submenu['edit.php'][5]); // Leads to listing of available posts to edit // unset($submenu['edit.php'][10]); // Add new post // unset($submenu['edit.php'][15]); // Remove categories // unset($submenu['edit.php'][16]); // Removes Post Tags } add_action('admin_menu', 'remove_submenus_all_please', 999);
And to remove for certain users just do the same thing except with capabilities added:
function remove_by_caps_admin_menu() { if ( !is_admin()) return; if ( !current_user_can('manage_options') ) { remove_menu_page( 'revslider' ); // REVSLIDER } elseif ( !current_user_can('edit_posts') ) { remove_menu_page( 'woocommerce' ); // WOO } else { } } add_action('admin_menu', 'remove_by_caps_admin_menu', 999);
AND TO TIE IT ALL TOGETHER WHY NOT SHORTEN OUR CODE? YOU CAN USE ARRAYS TO AVOID WRITING remove_submenu_page 50 times. This also works with the toolbar nodes:
if ( !function_exists( 'remove_admin_menupages_in_array' ) ) { function remove_admin_menupages_in_array() { if ( !is_admin()) return; $admin_menus = array( 'revslider', 'woocommerce', 'shortcodes-ultimate', ); foreach ( $admin_menus as $menu_page ) { if ( !current_user_can('manage_options') ) { remove_menu_page( $menu_page ); } } // foreach } // function add_action('admin_menu', 'remove_admin_menupages_in_array', 9999); } // exists
-
- 2014-09-07
<"Aggiorna"
Ho creato uno snippet di codice con unafunzionepiù robusta che si occupa sia deimenuprincipali che dei sottomenu-voci dimenu.
Risposta originale
Invece di specificarei menu che vuoi rimuovere,specificai menu che vuoimantenere :)
add_action('admin_init', 'nwcm_admin_init'); function nwcm_admin_init() { // Remove unnecessary menus $menus_to_stay = array( // Client manager 'nwcm', // Dashboard 'index.php', // Users 'users.php' ); foreach ($GLOBALS['menu'] as $key => $value) { if (!in_array($value[2], $menus_to_stay)) remove_menu_page($value[2]); } }
In questomodonon devi cercarei nomi deiplugine modificareil codice quando aggiunginuoviplugin ..
Update
I created a code snippet with a more robust function that deals with both main menus and sub-menu items.
Original answer
Instead of specifying the menus you want to remove, specify the menues you want to keep :)
add_action('admin_init', 'nwcm_admin_init'); function nwcm_admin_init() { // Remove unnecessary menus $menus_to_stay = array( // Client manager 'nwcm', // Dashboard 'index.php', // Users 'users.php' ); foreach ($GLOBALS['menu'] as $key => $value) { if (!in_array($value[2], $menus_to_stay)) remove_menu_page($value[2]); } }
This way you don't have to search for plugin names and modify the code when you add new plugins..
-
Esattamente quello che stavo cercando!Ancheiltuoframmento di codice sembrafantastico!Graziemilleper aver aggiunto latua soluzione.Apprezzalo!Exactly what I was looking for! Also your Code snippet seems like a great one! Thanks a ton for adding your solution. Appreciate it!
- 0
- 2019-07-14
- Devner
-
- 2015-01-22
Devitrovareil $menu_sluggiusto.Il seguente codice hafunzionatoperme:
add_action( 'admin_init', 'remove_menus' ); function remove_menus(){ remove_menu_page( 'wpcf7' ); }
You need to find the right $menu_slug. The following code worked for me:
add_action( 'admin_init', 'remove_menus' ); function remove_menus(){ remove_menu_page( 'wpcf7' ); }
-
- 2014-12-03
Ovviamentepuoi specificare sologlielementi che desideri rimuovere.Dai un'occhiata al codice qui sotto:
/wordpress/wp-content/plugins/your_plugin/your_plugin.php : add_action('admin_init', 'nwcm_admin_init'); function nwcm_admin_init() { // Remove unnecessary menus $menus_to_remove = array( // menu items you want to remove 'menu_item_1', 'menu_item_2', . . 'menu_item_n' ); // To avoid warning message, check whether 'menu' is set AND is an array if(isset($GLOBALS['menu']) && is_array($GLOBALS['menu'])) { foreach ($GLOBALS['menu'] as $key => $value) { //Remove the '!' in the 'if' condition. if (in_array($value[2], $menus_to_remove)) remove_menu_page($value[2]); } } }
Questo è soloilnegativo delmetodo dinumediaweb.Grazie @numediaweb.Funzionabene.
P.S .: "menu_item_1/n" ->puntailmouse sulla voce dimenue recupera lapaginaesatta di quella voce dimenumostratanel link.
Of course you can specify only the items you want to remove. Have a look in the code below:
/wordpress/wp-content/plugins/your_plugin/your_plugin.php : add_action('admin_init', 'nwcm_admin_init'); function nwcm_admin_init() { // Remove unnecessary menus $menus_to_remove = array( // menu items you want to remove 'menu_item_1', 'menu_item_2', . . 'menu_item_n' ); // To avoid warning message, check whether 'menu' is set AND is an array if(isset($GLOBALS['menu']) && is_array($GLOBALS['menu'])) { foreach ($GLOBALS['menu'] as $key => $value) { //Remove the '!' in the 'if' condition. if (in_array($value[2], $menus_to_remove)) remove_menu_page($value[2]); } } }
This is just the negative of numediaweb's method. Thanks @numediaweb. It works fine.
P.S.: 'menu_item_1/n' -> point mouse over the menu item and fetch the exact page of that menu item shown in the link.
-
- 2018-02-14
utilizza questo snippet di codice
function your_custom_name() { remove_menu_page('vc-general'); //the slug as seen wp-admin.php?page=vc-general } add_action( 'admin_init', 'your_custom_name' );
use this code snippet
function your_custom_name() { remove_menu_page('vc-general'); //the slug as seen wp-admin.php?page=vc-general } add_action( 'admin_init', 'your_custom_name' );
-
Perfavore ** [modifica] latua risposta **e aggiungi una spiegazione: **perché ** questopotrebbe risolvereilproblema?Please **[edit] your answer**, and add an explanation: **why** could that solve the problem?
- 0
- 2018-02-14
- fuxia
Hoil seguente codice,chepuliscemolte cose chenon verranno utilizzatenell'area di amministrazione:
Tuttavia,ci sono due voci dimenu che sono stateinserite daiplugin.
Quandopassoilmouse su ciascuna voce dimenu,si dice chei link sono:
Esiste unmodopernascondere anche questepagine dimenu?