Создание страниц административных меню

Те, кто занимаются разработкой плагинов или тем для WordPress понимают, что пользователей надо обеспечить какими-то настройками.

Причем по логике настройки должны находиться в админке — для этого и нужны административные меню. «Параметы», «Общие», «Обсуждения», «Все пользователи» и так далее — это они и есть.

Короче, как их создать?

Как обычно, мы не будем использовать чьи-то кривые готовые плагины и засунем весь код в functions.php.

Функция add_menu_page()

add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );

Итак:

$page_title — то, что будет отображаться в заголовке страницы с настройками,

$menu_title — так будет называться пункт в меню со ссылкой на эту страницу,

$capability — уровень доступа пользователя к этому меню,

$menu_slug — это будет определять URL страницы с настройками,

$function — функция, генерирующая страницу,

$icon_url — адрес иконки, по умолчанию будет ставиться шестеренка,

$position — порядок, по умолчанию в самый конец;

Но как сделать, чтобы вся эта хрень работала?! Приведу пример, и сразу всё станет ясно.

add_action('admin_menu', 'my_admin_menu');
 
function my_admin_menu() {
add_menu_page('Параметры каталога', 'Каталог', 1, 'catalog.php', 'print_page_function');
function print_page_function() {
	// тут уже будет находиться содержимое страницы
}
}

Засовываем этот код в functions.php и вот что получаем:

добавление административного меню первого уровня

add_submenu_page()

Возникает второй вопрос — как создать подменю и прикрутить его например к меню «Консоль» или «Параметры», которое кстати есть на рисунке выше.

add_submenu_page($parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function);

Есть что нового? Только одно:

$parent_slug — это $menu_slug родительского элемента. Чтобы его узнать просто наведите мышкой на какой-нибудь пункт и посмотрите ссылку. То, что находится в самом конце, после слеша — это и есть $parent_slug.

Ещё один пример:

add_action('admin_menu', 'banners_menu');
function banners_menu(){
add_submenu_page('index.php', 'Настройка баннеров', 'Баннеры', 1, 'banners-status.php', 'banner_on_off');
function banner_on_off() {
	// тут уже будет находиться содержимое страницы
}
}

В этом примере $parent_slug — это index.php, значит подменю будет крепиться к родительскому элементу «Консоль».

добавление подменю
Миша Рудрастых Разработчик WordPress WooCommerce

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

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.

Смотрите также