Removes an admin submenu.
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' )$menu_slugstringrequired
$submenu_slugstringrequired
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.
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;
}
| Version | Description |
|---|---|
| 3.1.0 | Introduced. |
© 2003–2024 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/remove_submenu_page