WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

remove_submenu_page() WP 3.1.0

Удаляет подпункт пункта меню в админ-панели WordPress. Например, Параметры->Постоянные ссылки.

Хуков нет.

Возвращает

false если не удалось найти и удалить указанный пункт меню.

Использование

remove_submenu_page( $menu_slug, $submenu_slug );
$menu_slug(строка) (обязательный)
Название пункта меню, подпункт которого нужно удалить. Обычно это название php файла отвечающего за отображение страницы (см. его в адресной строке браузера).
$submenu_slug(строка) (обязательный)
Название подпункта меню, который нужно удалить. Обычно это название php файла отвечающего за отображение страницы (см. его в адресной строке браузера). Указывать нужно вместо с параметрами запроса и в url_encode().

Примеры

#1. Удалим страницу ссылку на страницу Параметры->Постоянные ссылки:

remove_submenu_page( 'options-general.php', 'options-permalink.php' );

Так как функция добавлена в версии 3.1, возможно, что нам понадобится совместимость с более ранними версиями ВП, организовать её можно таким образом, добавив код в function.php:

add_action( 'admin_menu', 'my_remove_menu_pages' );
function my_remove_menu_pages() {
	// для версий WP 3.1 и выше
	if ( function_exists('remove_menu_page') ) {
		remove_submenu_page( 'options-general.php', 'options-discussion.php' );
	} else {
		// для версий WP ниже 3.1
		unset( $GLOBALS['submenu']['options-general.php'][25] );
	}
}

В данном примере мы удалили подпункт "Обсуждение" в меню настроек:

#2 Массив подпунктов меню

Элементы из этого массива нужно указывать в этой функции:

$menu_slug - ключ массива
$submenu_slug - третий элемент массива

Array (
	[index.php] => Array
			[0] => Array
					[0] => Главная
					[1] => read
					[2] => index.php

			[10] => Array
					[0] => Обновления <span class='update-plugins count-0'><span class='update-count'>0</span></span>
					[1] => update_core
					[2] => update-core.php

	[upload.php] => Array
			[5] => Array
					[0] => Библиотека
					[1] => upload_files
					[2] => upload.php

			[10] => Array
					[0] => Добавить новый
					[1] => upload_files
					[2] => media-new.php

	[edit-comments.php] => Array
			[0] => Array
					[0] => Все комментарии
					[1] => edit_posts
					[2] => edit-comments.php

	[edit.php] => Array
			[5] => Array
					[0] => Все посты
					[1] => edit_posts
					[2] => edit.php

			[10] => Array
					[0] => Добавить пост
					[1] => edit_posts
					[2] => post-new.php

			[15] => Array
					[0] => Рубрики
					[1] => manage_categories
					[2] => edit-tags.php?taxonomy=category

			[16] => Array
					[0] => Метки
					[1] => manage_post_tags
					[2] => edit-tags.php?taxonomy=post_tag

	[edit.php?post_type=page] => Array
			[5] => Array
					[0] => Все страницы
					[1] => edit_pages
					[2] => edit.php?post_type=page

			[10] => Array
					[0] => Добавить новую
					[1] => edit_pages
					[2] => post-new.php?post_type=page

	[themes.php] => Array
			[5] => Array
					[0] => Темы
					[1] => switch_themes
					[2] => themes.php

			[6] => Array
					[0] => Настроить
					[1] => customize
					[2] => customize.php?return=%2Fwp-admin%2F
					[3] => 
					[4] => hide-if-no-customize

			[7] => Array
					[0] => Виджеты
					[1] => edit_theme_options
					[2] => widgets.php

			[10] => Array
					[0] => Меню
					[1] => edit_theme_options
					[2] => nav-menus.php

	[plugins.php] => Array
			[5] => Array
					[0] => Установленные
					[1] => activate_plugins
					[2] => plugins.php

			[10] => Array
					[0] => Добавить новый
					[1] => install_plugins
					[2] => plugin-install.php

	[users.php] => Array
			[5] => Array
					[0] => Все пользователи
					[1] => list_users
					[2] => users.php

			[10] => Array
					[0] => Добавить нового
					[1] => create_users
					[2] => user-new.php

			[15] => Array
					[0] => Ваш профиль
					[1] => read
					[2] => profile.php

	[tools.php] => Array
			[5] => Array
					[0] => Все инструменты
					[1] => edit_posts
					[2] => tools.php

			[10] => Array
					[0] => Импорт
					[1] => import
					[2] => import.php

			[15] => Array
					[0] => Экспорт
					[1] => export
					[2] => export.php

	[options-general.php] => Array
			[10] => Array
					[0] => Общие
					[1] => manage_options
					[2] => options-general.php

			[15] => Array
					[0] => Написание
					[1] => manage_options
					[2] => options-writing.php

			[20] => Array
					[0] => Чтение
					[1] => manage_options
					[2] => options-reading.php

			[30] => Array
					[0] => Медиафайлы
					[1] => manage_options
					[2] => options-media.php

			[40] => Array
					[0] => Постоянные ссылки
					[1] => manage_options
					[2] => options-permalink.php

			[45] => Array
					[0] => Конфиденциальность 
					[1] => manage_privacy_options
					[2] => privacy.php
)

Код remove submenu page: wp-admin/includes/plugin.php WP 5.2

<?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;
}

Cвязанные функции

Из метки: Минимизация движка

Еще из метки: Меню администрирования (admin menu)

Еще из раздела: Админ-панель

2 коммента
  • campusboy3314 cайт: www.youtube.com/c/wpplus

    Создал свою страничку в админке с настройками, адрес к сабстранице такой
    /wp-admin/admin.php?page=dop_theme_settings
    Пробую прописать так:
    remove_submenu_page( 'admin.php', 'dop_theme_settings' );
    Не удаляется. Как скрывать такие пункты?
    Так иногда делают плагины. Поставил галочку "Отображать настройки безопасности", сохранил и опачки - появляется новая вкладка "Безопасность". Или там просто через условие, что если активирована настройка, то зарегистрировать сабменю? Скорее всего так. Но я вот хочу сделать "секретное сабменю", экспериментирую.

    Ответить3.8 года назад #
    • Kama7451

      Плагины регистрируют меню если есть галочка.

      Зарегить но не показывать страницу в меню можно. Для этого нужно указать первый параметр $parent_slug = null при регистрации страницы, в функции add_submenu_page()

      1
      Ответить3.8 года назад #
Здравствуйте, !     Войти . Зарегистрироваться