remove_submenu_page( string $menu_slug, string $submenu_slug )
Removes an admin submenu.
Contents
Description
Example usage:
remove_submenu_page( 'themes.php', 'nav-menus.php' )
remove_submenu_page( 'tools.php', 'plugin_submenu_slug' )
remove_submenu_page( 'plugin_menu_slug', 'plugin_submenu_slug' )
Parameters
- $menu_slug
-
(string) (Required) The slug for the parent menu.
- $submenu_slug
-
(string) (Required) The slug of the submenu.
Return
(array|false) The removed submenu on success, false if not found.
More Information
Depending on when this function is called, it may not prevent users from accessing the screen for the removed submenu directly (see ticket #18850). Removing a menu does not replace the need to filter a user’s permissions as appropriate.
In order to remove the theme-editor.php submenu of themes.php (and others) in more recent versions of WordPress, you need to bind to the admin_menu hook with a very high priority (about 110, depending on the submenus to remove). Don’t use admin_init as previously stated here, hence it will break wp-admin/admin-ajax.php.
Source
File: wp-admin/includes/plugin.php
function remove_submenu_page( $menu_slug, $submenu_slug ) { global $submenu; if ( ! isset( $submenu[ $menu_slug ] ) ) { return false; } foreach ( $submenu[ $menu_slug ] as $i => $item ) { if ( $submenu_slug === $item[2] ) { unset( $submenu[ $menu_slug ][ $i ] ); return $item; } } return false; }
Expand full source code Collapse full source code View on Trac View on GitHub
Changelog
Version | Description |
---|---|
3.1.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.
Sometimes it can be tricky to figure what combination of menu/submemiu slug is required to remove a submenu.
You can figure it out by actually printing the
global $submenu
array to your debug.log file, and identifying the submenu you want to remove.Top ↑
Feedback
The $submenu var was not available for me. I ended up looking at $GLOBALS[‘submenu’] instead. — By webunraveling —
Example
Removes the Widgets submenu page.
In the above example, the value of
$page
would have been: