add_submenu_page() – добавляет вложенный пункт в админ-меню и страницу к нему

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Функция добавляет вложенный элемент административного меню и страницу к нему. Если же нужно добавить пункт меню верхнего уровня, то вам пригодится функция add_menu_page().

Возвращает хук созданной страницы, который можно использовать в других функциях, подробнее про то, как использовать этот хук, читайте в этом примере.

Функция должна быть использована внутри одного из следующих хуков:

add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function = '', $position = null

Параметры

$parent_slug
(строка) Ярлык родительского элемента меню, для которого будет добавлять этот дочерний. Вы также можете использовать значение null, чтобы создать страницу, но не добавлять ссылку в меню.

Вот кстати ярлыки родительских элементов меню, доступные по умолчанию:

  • index.php — Консоль (Dashboard),
  • edit.php — Посты (Posts),
  • upload.php — Медиафайлы (Media),
  • link-manager.php — Ссылки (Links),
  • edit.php?post_type=page — Страницы (Pages),
  • edit-comments.php — Комментарии (Comments),
  • edit.php?post_type=your_post_type — Произвольные типы записей,
  • themes.php — Внешний вид (Appearance),
  • plugins.php — Плагины (Plugins),
  • users.php — Пользователи (Users),
  • tools.php — Инструменты (Tools),
  • options-general.php — Настройки (Settings),
  • settings.php — Настройки (Settings) сети сайтов в режиме WordPress Multisite.
$page_title
(строка) То, что будет отображаться в заголовке вкладки браузера при переходе на эту страницу.
$menu_title
(строка) То, как будет называться непосредственно элемент в административном меню.
$capability
(строка) Права, которые необходимо иметь пользователю для просмотра этой страницы.
$menu_slug
(строка) Часть URL этой страницы. Должен быть уникальным, содержать только буквы нижнего регистра латинского алфавита, цифры, дефисы и символы подчёркивания, всё остальное будет очищено функцией sanitize_key()
$function
(строка|массив) Название функции, которая будет выводить HTML этой страницы либо в виде строки, например true_function, либо в виде массива, если вы хотите использовать метод класса array( $this, 'true_function' )
$position
Расположение пункта субменю по отношению к другим вложенным элементам. Чем меньше цифра, тем выше пункт меню, и наоборот.

Альтернативные функции

В WordPress есть набор функций для добавление пунктов меню в админ-панеле, все они работают на основе функции add_submenu_page(). Например два сниппета кода абсолютно идентичны:

add_submenu_page( 
	'options-general.php',
	'Мишин плагин',
	'Настройки Мишиного плагина',
	'manage_options',
	'mishin-plugin',
	'mishin_plugin_callback'
);

Полностью такой же код:

add_options_page( 
	'Мишин плагин',
	'Настройки Мишиного плагина',
	'manage_options',
	'mishin-plugin',
	'mishin_plugin_callback'
);

Пример

В документации функции add_menu_page() мы добавляли родительский элемент меню «Слайдер», давайте сейчас добавим для него дочерний.

add_action( 'admin_menu', 'true_add_submenus' );
 
function true_add_submenus() {
 
	add_menu_page( 'Настройки слайдера', 'Слайдер', 'manage_options', 'true_slider', 'true_slider_page_callback', 'dashicons-images-alt2' );
	// первый элемент субменю дублирует родительский элемент
	add_submenu_page( 'true_slider', 'Настройки слайдера', 'Слайдер', 'manage_options', 'true_slider', 'true_slider_page_callback' );
 
	add_submenu_page( 'true_slider', 'Доп. настройки слайдера', 'Доп. настройки', 'manage_options', 'true_slider_2', 'true_slider_page_callback_2' );
 
}
 
function true_slider_page_callback(){
	echo '<div class="wrap"><h2>' . get_admin_page_title() . '</h2></div>';
	// можем использовать функцию get_admin_page_title(), чтобы динамически вывести "Настройки слайдера"
}

Если вдруг не знаете, куда вставлять код.

В результате получаем:

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии