Позволяет удалить дочерний пункт административного меню WordPress, например «Обновления» из «Консоль» или «Редактор тем» из «Внешний вид».

В случае, если вы хотите удалить целиком весь родительский пункт меню (Консоль, Внешний вид и т.д), то воспользуйтесь функцией remove_menu_page().
Важный момент! Сами страницы не удалятся и будут доступны по прямым ссылкам.
Функция возвращает массив удалённого пункта меню в случае успеха и false – если элемента субменю, который мы пытаемся удалить, не существует.
remove_submenu_page( $menu_slug, $submenu_slug )
Параметры
- $menu_slug
- (строка) Ярлык родительского элемента, подменю из которого хотим удалять.
- $submenu_slug
- (строка) Ярлык элемента подменю, который хотим удалить.
Узнать значения этих двух параметров, на мой взгляд, легче всего, проинспектировав нужный пункт подменю в инспекторе браузера (Правая кнопка мыши – Проинспектировать элемент). Но список дочерних элементов меню вы можете найти ниже.
| Подпункт меню | $menu_slug, $submenu_slug | 
|---|---|
| Консоль – Консоль | index.php,index.php | 
| Консоль – Обновления | index.php,update-core.php | 
| Записи – Все записи | edit.php,edit.php | 
| Записи – Добавить новую | edit.php,post-new.php | 
| Записи – Рубрики | edit.php,edit-tags.php?taxonomy=category | 
| Записи – Метки | edit.php,edit-tags.php?taxonomy=post_tag | 
| Медиафайлы – Библиотека | upload.php,upload.php | 
| Медиафайлы – Добавить новый | upload.php,media-new.php | 
| Страницы – Все страницы | edit.php?post_type=page,edit.php?post_type=page | 
| Страницы – Добавить новую | edit.php?post_type=page,post-new.php?post_type=page | 
| Внешний вид – Темы | themes.php,themes.php | 
| Внешний вид – Виджеты | themes.php,widgets.php | 
| Внешний вид – Меню | themes.php,nav-menus.php | 
| Внешний вид – Редактор тем | themes.php,theme-editor.php | 
| Плагины – Установленные | plugins.php,plugins.php | 
| Плагины – Добавить новый | plugins.php,plugin-install.php | 
| Плагины – Редактор плагинов | plugins.php,plugin-editor.php | 
| Пользователи – Все пользователи | users.php,users.php | 
| Пользователи – Добавить нового | users.php,user-new.php | 
| Пользователи – Профиль | users.php,profile.php | 
| Инструменты – Все инструменты | tools.php,tools.php | 
| Инструменты – Импорт | tools.php,import.php | 
| Инструменты – Экспорт | tools.php,export.php | 
| Инструменты – Здоровье сайта | tools.php,site-health.php | 
| Инструменты – Экспорт персональных данных | tools.php,export-personal-data.php | 
| Инструменты – Удаление персональных данных | tools.php,erase-personal-data.php | 
| Настройки – Общие | options-general.php,options-general.php | 
| Настройки – Написание | options-general.php,options-writing.php | 
| Настройки – Чтение | options-general.php,options-reading.php | 
| Настройки – Обсуждение | options-general.php,options-discussion.php | 
| Настройки – Медиафайлы | options-general.php,options-media.php | 
| Настройки – Постоянные ссылки | options-general.php,options-permalink.php | 
| Настройки – Приватность | options-general.php,options-privacy.php | 
Помимо этих подпунктов меню у нас могут быть ещё подпункты из меню суперадминистратора в сети мультисайт.
| Подпункт меню | $menu_slug, $submenu_slug | 
|---|---|
| Консоль – Главная | index.php,index.php | 
| Консоль – Обновления | index.php,update-core.php | 
| Консоль – Обновить сеть | index.php,upgrade.php | 
| Сайты – Все сайты | sites.php,sites.php | 
| Сайты – Добавить новый | sites.php,site-new.php | 
| Пользователи – Все пользователи | users.php,users.php | 
| Пользователи – Добавить нового | users.php,user-new.php | 
| Темы – Установленные | themes.php,themes.php | 
| Темы – Добавить | themes.php,themes-install.php | 
| Темы – Редактор тем | themes.php,themes-editor.php | 
| Плагины – Установленные | plugins.php,plugins.php | 
| Плагины – Добавить новый | plugins.php,plugin-install.php | 
| Плагины – Редактор плагинов | plugins.php,plugin-editor.php | 
Примеры
В качестве примера можем удалить подпункт меню Консоль – Обновления. Если вы взгляните на таблицу выше, мы поймёте, что в качестве параметра $menu_slug функции нам нужно воспользоваться значением index.php, а в качестве параметра $submenu_slug – update-core.php.
Ещё один важный момент, про который нужно знать, это то, что функцию не нужно использовать напрямую, а вешать на на хук admin_menu (для сети WordPress Мультисайт – network_admin_menu). В некоторых ситуациях кстати нужно увеличивать приоритет хука, а в некоторых и вовсе использовать admin_init. Не понимаете, о чём я говорю? Смотрите видеоурок по хукам.
Вы уже заждались готовый код:
add_action( 'admin_menu', 'true_updates_submenu' ); function true_updates_submenu(){ remove_submenu_page( 'index.php', 'update-core.php' ); }
Вставляем код и получаем результат:

Помните, я говорил, что функция remove_submenu_page() ещё и что-то возвращает? Давайте слегка видоизменю и прокомментирую предыдущий пример.
add_action( 'admin_menu', 'true_updates_submenu' ); function true_updates_submenu(){ $removed_submenu = remove_submenu_page( 'index.php', 'update-core.php' ); /* Array ( [0] => Обновления 2 [1] => update_core [2] => update-core.php ) */ // $removed_submenu[0] Название удалённого подпункта меню // (напишите в комментах, почему на конце цифра 2) // $removed_submenu[1] Права, которые должны быть у пользователя для доступа к странице // $removed_submenu[2] Ярлык }
Источник: Блог Миши Рудрастых