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

Те, кто занимаются разработкой плагинов или тем для 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, значит подменю будет крепиться к родительскому элементу «Консоль».

добавление подменю

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии 2

  • PetroSpocky 26 сентября 2011 #

    спасибо за интересный блог

  • Алексей 17 августа 2012 #

    Божественно

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, в случае несоблюдения этого условия в 99% случаях ваш коммент будет удалён, а автор заблокирован. Печалька.