remove_submenu_page( string $menu_slug, string $submenu_slug ): array|false
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
.
View all references
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;
}
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: