Using the remove_menu_page()
function works for removing the default admin menu items by their slug like so:
add_action( 'admin_menu', 'hide_menu' );
function hide_menu() {
remove_menu_page( 'index.php' ); // Dashboard
remove_menu_page( 'tools.php' ); // Tools
}
When a plugin created their own menu in the Dashboard, the URL structure looks like the following:
http://example.com/wp-admin/admin.php?page=plugin-slug
However when trying to remove the custom plugin menu item like so:
remove_menu_page( 'admin.php?page=plugin-slug' );
Nothing changes. Looking at a similar questions here and here, it seems that my function isn’t called in time once the custom plugin settings load? Yet, when I try to increase the priority to a higher number, that still doesn’t work:
add_action( 'admin_menu', 'hide_menu', 9001, 1 );
Is there a work around? Am I doing this correctly?
Place this below temporary code in your functions.php
or any where that can be executed.
add_action( 'admin_init', 'the_dramatist_debug_admin_menu' );
function the_dramatist_debug_admin_menu() {
echo '<pre>' . print_r( $GLOBALS[ 'menu' ], TRUE) . '</pre>';
}
Then search for the plugin-slug
. In which array you find it copy the [2]
value and put it in remove_menu_page('the [2] value')
and hook it to admin_init
like below-
add_action('admin_init', '');
function the_dramatist_remove_menu(){
remove_menu_page( 'the [2] value' );
});
And it will be working. And after it is working remove the temporary code block.
On the other hand, you can inspect the plugin code which menu page you wanna remove and in their add_menu_page()
function take the fourth parameter of the add_menu_page()
function and put it inside remove_menu_page('fourth parameter')
. It will work as well. The code will look like below-
add_action('admin_init', '');
function the_dramatist_remove_menu(){
remove_menu_page( 'fourth parameter of add_menu_page()' );
});