Приветик!
Не верится, что наконец-то, спустя 2 года, я надумался рассказать об этом вам. Надеюсь, сегодня порадовать своих читателей и любителей WordPress.
Ведь в сегодняшней статье я расскажу, как создать свое меню в админ-панели WordPress.
Теперь, если вы будете создавать свой плагин, вы сможете сделать к нему и настройки.
Если же вы создаете тему для WordPress, вы сможете сделать дополнительные фишки и настройки.
Что ж, приступлю сразу к делу.
Для тех, кто оказался на моем блоге впервые или только недавно его посещает, рекомендую почитать статью, как сделать плагин для WordPress.
В статье увидите пример для темы. Точнее, сделаем вместе с вами настройки для темы и выведем настройки в отдельном меню в админ-панели.
Итак, нам нужен будет файл «functions.php» активной темы и весь предлагаемый код вставим в самый вверх сразу после знака «<?php», а можно и так «<?».
Как добавить меню
Для создания меню в админ-панели есть специальная функция «add_menu_page».
Шаблон использования функции «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 — адрес иконки, по умолчанию будет ставиться шестеренка. Можно ставить иконку как картинку или же, как иконку «dashicons»,
- $position — порядок или позиция меню, по умолчанию в самый конец.
Список позиций для базовых пунктов меню:
- 2 Консоль
- 4 Разделитель
- 5 Посты
- 10 Медиа
- 15 Ссылки
- 20 Страницы
- 25 Комментарии
- 59 Разделитель
- 60 Внешний вид
- 65 Плагины
- 70 Пользователи
- 75 Инструменты
- 80 Настройки
- 99 Разделитель
Приступим к практике.
function menu_panel_grafik_rabot() { add_menu_page('График работы', 'График работы', 'manage_options', 'grafik-rabot.php', 'grafik_rabot','dashicons-phone', 1); // тут уже будет находиться функция — $function. В моем случае функция grafik_rabot } add_action('admin_menu', 'menu_panel_grafik_rabot');
Если вы сохраните, то в меню у вас появится еще один раздел меню «График работы»:
Теперь нужно создать функцию «grafik_rabot» для страницы «График работы», внутри которой вставим содержимое страницы.
function grafik_rabot() { // тут уже будет находиться содержимое страницы echo "<h2>График работы</h2><hr><p>Изменить график работы</p><hr>"; }
Здесь главное не напутать с кавычками, так как php насчет одинарных и двойных кавычек очень чувствительный.
Вот так будет полностью выглядеть готовый код:
function menu_panel_grafik_rabot() { add_menu_page('График работы', 'График работы', 'manage_options', 'grafik-rabot.php', 'grafik_rabot','dashicons-phone', 1); // тут уже будет находиться функция — $function. В моем случае функция grafik_rabot function grafik_rabot() { // тут уже будет находиться содержимое страницы echo "<h2>График работы</h2><hr><p>Изменить график работы</p><hr>"; } } add_action('admin_menu', 'menu_panel_grafik_rabot');
Результат:
Если нужно добавить еще один раздел в меню, то для этого достаточно добавить еще одну функцию «add_menu_page», например:
add_menu_page('Цены', 'Цены', 'manage_options', 'ceni.php', 'ceni','dashicons-store', 3);
Обратите внимание на разное название функции вызова страницы с содержимым. В первом случае это была функция «grafik_rabot», во втором функция «ceni».
Вот готовый код (я заменил комментарий в коде для лучшего ориентирования):
function menu_panel_grafik_rabot() { // меню для раздела - График работы add_menu_page('График работы', 'График работы', 'manage_options', 'grafik-rabot.php', 'grafik_rabot','dashicons-phone', 1); // меню для раздела - Цены add_menu_page('Цены', 'Цены', 'manage_options', 'ceni.php', 'ceni','dashicons-store', 3); // Страница раздела - График работы function grafik_rabot() { // тут уже будет находиться содержимое страницы echo "<h2>График работы</h2><hr><p>Изменить график работы</p><hr>"; } // Страница раздела - Цены function ceni() { // тут уже будет находиться содержимое страницы echo "<h2>Цены</h2><hr><p>Изменить цены</p><hr>"; } } add_action('admin_menu', 'menu_panel_grafik_rabot');
Результат:
Как бы на этом можно было и закончить статью, но хочу продолжить, так как не все возможности я раскрыл.
Как добавить подменю
Для создания подменю в админ-панели есть специальная функция «add_submenu_page».
Шаблон использования функции «add_submenu_page»:
add_submenu_page($parent_slug, $page_title, $menu_title, $capability, $menu_slug, $ function );
Описание:
- $parent_slug – название меню, к которому относиться подменю,
- $page_title — заголовок страницы,
- $menu_title — название пункта в меню,
- $capability — уровень доступа пользователя к этому меню,
- $menu_slug — URL страницы (должно быть уникальным),
- $function — название функции, которая содержит в себе содержание страницы подменю (должно быть уникальным),
Изменим пункт меню «Цены», добавим подменю «Новая цена», «Список цен».
// Подменю для раздела меню - ЦЕНЫ add_submenu_page('ceni.php', 'Новая цена', 'Новая цена', 'manage_options', 'new.php', 'new_cena'); add_submenu_page('ceni.php', 'Список цен', 'Список цен', 'manage_options', 'spisok-cen.php', 'spisok_cena');
Вот так будет выглядеть код:
function menu_panel_grafik_rabot() { // меню для раздела - График работы add_menu_page('График работы', 'График работы', 'manage_options', 'grafik-rabot.php', 'grafik_rabot','dashicons-phone', 1); // меню для раздела - Цены add_menu_page('Цены', 'Цены', 'manage_options', 'ceni.php', 'ceni','dashicons-store', 3); // Страница раздела - График работы function grafik_rabot() { // тут уже будет находиться содержимое страницы echo "<h2>График работы</h2><hr><p>Изменить график работы</p><hr>"; } // Подменю для раздела меню - ЦЕНЫ add_submenu_page('ceni.php', 'Новая цена', 'Новая цена', 'manage_options', 'new.php', 'new_cena'); add_submenu_page('ceni.php', 'Список цен', 'Список цен', 'manage_options', 'spisok-cen.php', 'spisok_cena'); // Страница раздела - Новая цена function new_cena() { // тут уже будет находиться содержимое страницы echo "<h2>Новая цена</h2><hr><p>Изменить цены</p><hr>"; } // Страница раздела - Список цен function spisok_cena() { // тут уже будет находиться содержимое страницы echo "<h2>Список цен</h2><hr><p>Список:</p><hr>"; } } add_action('admin_menu', 'menu_panel_grafik_rabot');
Вот результат, но мне жуть как не нравится, что дублируется название раздела «ЦЕНЫ»:
Выход из положения – использовать «remove_submenu_page»:
function remove_menus_bloggood_ru(){ remove_submenu_page('ceni.php','ceni.php'); // удаляем в подменю дубль - ЦЕНА } add_action( 'admin_menu', 'remove_menus_bloggood_ru', 9999);
Строка №2 – «ceni.php» эта страница которую мы изначально прописали для цены.
Результат:
Вот так будет выглядеть весь код:
function menu_panel_grafik_rabot() { // меню для раздела - График работы add_menu_page('График работы', 'График работы', 'manage_options', 'grafik-rabot.php', 'grafik_rabot','dashicons-phone', 1); // меню для раздела - Цены add_menu_page('Цены', 'Цены', 'manage_options', 'ceni.php', 'ceni','dashicons-store', 3); // Страница раздела - График работы function grafik_rabot() { // тут уже будет находиться содержимое страницы echo "<h2>График работы</h2><hr><p>Изменить график работы</p><hr>"; } // Подменю для раздела меню - ЦЕНЫ add_submenu_page('ceni.php', 'Новая цена', 'Новая цена', 'manage_options', 'new.php', 'new_cena'); add_submenu_page('ceni.php', 'Список цен', 'Список цен', 'manage_options', 'spisok-cen.php', 'spisok_cena'); // Страница раздела - Новая цена function new_cena() { // тут уже будет находиться содержимое страницы echo "<h2>Новая цена</h2><hr><p>Изменить цены</p><hr>"; } // Страница раздела - Список цен function spisok_cena() { // тут уже будет находиться содержимое страницы echo "<h2>Список цен</h2><hr><p>Список:</p><hr>"; } } add_action('admin_menu', 'menu_panel_grafik_rabot'); // удаляем в подменю дубль - ЦЕНА function remove_menus_bloggood_ru(){ remove_submenu_page('ceni.php','ceni.php'); // удаляем в подменю дубль - ЦЕНА } add_action( 'admin_menu', 'remove_menus_bloggood_ru', 9999);
Как добавить свое подменю в существующее меню
Если вы хотите добавить подменю в уже существующие по умолчанию в WordPress, то для каждого такого пункта меню существует своя функция.
Вот список:
- add_dashboard_page — добавляет подменю в меню Консоль (Dashboard)
- add_posts_page — добавляет подменю в меню Записи (Posts)
- add_media_page — добавляет подменю в меню Медиафайлы (Media)
- add_links_page — добавляет подменю в меню Ссылки (Links)
- add_pages_page — добавляет подменю в меню Страницы (Pages)
- add_comments_page — добавляет подменю в меню Комментарии (Comments)
- add_theme_page — добавляет подменю в меню Внешний вид (Appearance)
- add_plugins_page — добавляет подменю в меню Плагины (Plugins)
- add_users_page — добавляет подменю в меню Пользователи (Users)
- add_management_page — добавляет подменю в меню Инструменты (Tools)
- add_options_page — добавляет подменю в меню Настройки (Settings)
К примеру, давайте добавим подменю «Плагин BlogGood» в меню «Настройки».
add_options_page('Плагин BlogGood', 'Плагин BlogGood', 'manage_options', 'plagin-bloggood.php','bloggood');
Вот полностью готовый код:
function bloggood_submenu_options() { add_options_page('Плагин BlogGood', 'Плагин BlogGood', 'manage_options', 'plagin-bloggood.php','bloggood'); function bloggood() { // тут уже будет находиться содержимое страницы echo "<h2>Плагин BlogGood</h2><hr>"; } } add_action('admin_menu', 'bloggood_submenu_options');
Результат:
На этом все!
Счастливо оставаться!
Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓
Последние новости категории:
Похожие статьи
Популярные статьи:
-
Как узнать id компьютера
Дата: 29 марта 2013
Прокомментировано:90
просмотров: 330348 -
Размеры форматов листов А0 – А7
Дата: 23 января 2013
Прокомментировано:3
просмотров: 274701 -
Смешные логические загадки с подвохом, отгадки прилагаются
Дата: 12 ноября 2014
Прокомментировано:5
просмотров: 222536 -
Готовые макеты блоков для веб-страниц на HTML и CSS
Дата: 25 июня 2014
Прокомментировано:23
просмотров: 187748 -
Установка windows 7 на ноутбук
Дата: 18 декабря 2012
Прокомментировано:169
просмотров: 186564
6 Ответов на комментарий - Как создать свое меню в админ-панели WordPress
Добавить комментарий
Метки: wordpress, без плагинов
Здравствуйте, Степан!
Подскажите пожалуйста, можно ли сделать админку не используя движки типа WordPress?
Сайт написан с при помощи HTML и CSS.
Здравствуйте, Сергей!
Можно, но это нужно будет использовать PHP и базу данных.
Спасибо!

Я так и думал. Буду изучать PhpMyAdmin и MySQL.
Уважаемый автор! А как добавить несколько текстовых полей в подменю Плагин BlogGood меню Настройки? И как их вывести?
Тот же вопрос в меню Цена?
Если я Вас, Геннадий правильно понял, то вот так:
Добрый день. Внутри функции, которая отвечает за вывод содержимого страницы (например, bloggood) мне необходим вызов своей функции (например, по клику на кнопке). Где ее разместить? Размещал и внутри данной функции и выше и вообще за пределами функции по добавлению своего меню в админку. Результат один и тот же: функция не определена.
Сможете помочь?
С уважением, Сергей.