Функция remove_submenu_page()
в WordPress предназначена для удаления определённого подменю из админ-панели, что позволяет улучшить пользовательский интерфейс, скрывая ненужные элементы меню. Она полезна для разработчиков, которые хотят кастомизировать административную область WordPress, убирая лишние ссылки и упрощая навигацию.
remove_submenu_page( string $menu_slug, string $submenu_slug ): array|false
Параметры
$parent_slug
(string) — Слаг родительского пункта меню, из которого нужно удалить подменю. Это значение обычно соответствует имени PHP-файла, отвечающего за отображение родительской страницы меню.$submenu_slug
(string) — Слаг подменю, который вы хотите удалить. Это значение также соответствует имени PHP-файла, отвечающего за отображение подменю.
Возвращаемое значение
Функция возвращает массив, содержащий информацию о удалённом подменю, или false
, если подменю не найдено. Возвращаемый массив включает:
[0]
— Название меню.[1]
— Минимальный уровень или необходимая способность.[2]
— URL файла элемента.
Если подменю не найдено, функция возвращает false
.
Пример 1: Удаление подменю «Виджеты»
В этом примере мы удаляем подменю «Виджеты» из родительского пункта меню «Темы«:
/**
* Удаляем подменю "Виджеты".
*/
function genius_adjust_the_wp_menu() {
$page = remove_submenu_page( 'themes.php', 'widgets.php' );
if ( $page ) {
// $page[0] содержит название меню
// $page[1] содержит минимальный уровень или способность
// $page[2] содержит URL файла элемента
echo 'Удалено подменю: ' . $page[0];
} else {
echo 'Подменю не найдено.';
}
}
add_action( 'admin_menu', 'genius_adjust_the_wp_menu', 999 );
В этом примере значение переменной $page
будет:
array(3) { [0]=> string(7) "Widgets" [1]=> string(18) "edit_theme_options" [2]=> string(11) "widgets.php" }
Пример 2: Обеспечение совместимости
Для обеспечения совместимости с более старыми версиями WordPress, где функция remove_submenu_page()
может отсутствовать, можно использовать следующий код:
add_action( 'admin_menu', 'my_remove_menu_pages' );
function my_remove_menu_pages() {
// Для WordPress версии 3.1 и выше
if ( function_exists('remove_submenu_page') ) {
$page = remove_submenu_page( 'options-general.php', 'options-discussion.php' );
if ( $page ) {
// Обработка удалённого подменю
}
}
// Для более ранних версий WordPress
else {
unset( $GLOBALS['submenu']['options-general.php'][25] );
}
}
В данном примере функция проверяет наличие remove_submenu_page()
и удаляет подменю в зависимости от версии WordPress.
Пример 3: Удаление подменю на основе массива
Для удаления подменю, можно использовать информацию из массива меню. Ниже приведен список меню и их ключей:
MENU..................KEY...LINK URL
Dashboard.............2.....index.php
-Home.................0.....index.php
Separator (first).....4.....separator1
Posts.................5.....edit.php
-All Posts............5.....edit.php
-Add New..............10....post-new.php
-Categories...........15....edit-tags.php?taxonomy=category
-Tags.................16....edit-tags.php?taxonomy=post_tag
Media.................10....upload.php
-Library..............5.....upload.php
-Add New..............10....media-new
Links.................15....link-manager.php
-All Links............5.....link-manager.php
-Add New..............10....link-add.php
-Link Categories......15....edit-tags.php?taxonomy=link_category
Pages.................20....edit.php?post_type=page
-All Pages............5.....edit.php?post_type=page
-Add New..............10....post-new.php?post_type=page
Comments..............25....edit-comments.php
-All Comments.........0.....edit-comments.php
Separator (Second)....59....separator2
Appearance............60....themes.php
-Themes...............5.....themes.php
-Widgets..............7.....widgets.php
-Menus................10....nav-menus.php
Plugins...............65....plugins.php
-Installed Plugins....5.....plugins.php
-Add New..............10....plugin-install.php
-Editor...............15....plugin-editor.php
Users.................70....users.php
-All Users............5.....users.php
-Add New..............10....user-new.php
-Your Profile.........15....profile.php
Tools.................75....tools.php
-Available Tools......5.....tools.php
-Import...............10....import.php
-Exports..............15....export.php
Settings..............80....options-general.php
-General..............10....options-general.php
-Writing..............15....options-writing.php
-Reading..............20....options-reading.php
-Discussion...........25....options-discussion.php
-Media................30....options-media.php
-Privacy..............35....options-privacy.php
-Permalinks...........40....options-permalink.php
Separator (last)......99....separator-last
Для удаления подменю «Добавить новый» из меню «Медиафайлы», используйте:
remove_submenu_page( 'upload.php', 'media-new.php' );
Заключение
Функция remove_submenu_page()
предоставляет способ управления элементами под-меню в админ-панели WordPress. С помощью этой функции можно скрывать ненужные или избыточные подменю, упрощая интерфейс и улучшая пользовательский опыт.