remove_submenu_page()

Позволяет удалить дочерний пункт административного меню 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_slugupdate-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' );
 
}

Вставляем код и получаем результат:

Удаление подпункта меню в WordPress функцией remove_submenu_page()
Обратите внимание, что вместе с подпунктом «Обновления» автоматически пропал и подпункт «Главная», это потому, что он соответствует родительскому пункту меню. Кроме того, специально показал вам, что страница «Обновления WordPress» по-прежнему доступна по прямой ссылке.

Помните, я говорил, что функция 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] Ярлык
 
}

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал