Те, кто занимаются разработкой плагинов или тем для WordPress понимают, что пользователей надо обеспечить какими-то настройками.
Причем по логике настройки должны находиться в админке — для этого и нужны административные меню. «Параметы», «Общие», «Обсуждения», «Все пользователи» и так далее — это они и есть.
Короче, как их создать?
Как обычно, мы не будем использовать чьи-то кривые готовые плагины и засунем весь код в functions.php.
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($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