BloGGood.ru

Блог Костаневича Степана

WordPress, PHP, HTML, CSS, Windows

Блог на разные темы, seo-оптимизация, раскрутка сайта, создание сайта, вкусные эффекты для сайта и многое другое…

Главная » Wordpress » Как создать свое меню в админ-панели WordPress

Как создать свое меню в админ-панели WordPress

2016-12-31 / Вр:13:38 / просмотров: 11968

Как создать свое меню в админ-панели WordPress

Приветик!
Не верится, что наконец-то, спустя 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');

Если вы сохраните, то в меню у вас появится еще один раздел меню «График работы»:

Как создать свое меню в админ-панели WordPress

Теперь нужно создать функцию «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');

Результат:

Как создать свое меню в админ-панели WordPress

Если нужно добавить еще один раздел в меню, то для этого достаточно добавить еще одну функцию «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');

Результат:

Как создать свое меню в админ-панели WordPress

Как бы на этом можно было и закончить статью, но хочу продолжить, так как не все возможности я раскрыл.

Как добавить подменю

Для создания подменю в админ-панели есть специальная функция «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');

Вот результат, но мне жуть как не нравится, что дублируется название раздела «ЦЕНЫ»:

Как создать свое меню в админ-панели WordPress

Выход из положения – использовать «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» эта страница которую мы изначально прописали для цены.

Результат:

Как создать свое меню в админ-панели WordPress

Вот так будет выглядеть весь код:

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');

Результат:

Как создать свое меню в админ-панели WordPress

На этом все!
Счастливо оставаться!

Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓

Получай обновления блога!!! Подпишись:

Популярные статьи:

6 Ответов на комментарий - Как создать свое меню в админ-панели WordPress

  1. Сергей

    Здравствуйте, Степан!

    Подскажите пожалуйста, можно ли сделать админку не используя движки типа WordPress?
    Сайт написан с при помощи HTML и CSS.

  2. Avatar photo Степан => автор блога

    Здравствуйте, Сергей!
    Можно, но это нужно будет использовать PHP и базу данных.

  3. Сергей

    Спасибо!
    Я так и думал. Буду изучать PhpMyAdmin и MySQL.
    :gazeta: :idea:

  4. Геннадий

    Уважаемый автор! А как добавить несколько текстовых полей в подменю Плагин BlogGood меню Настройки? И как их вывести?

    Тот же вопрос в меню Цена?

  5. Avatar photo Степан => автор блога

    Если я Вас, Геннадий правильно понял, то вот так:

    function bloggood_submenu_options() {
    add_options_page('Плагин BlogGood', 'Плагин BlogGood', 'manage_options', 'plagin-bloggood.php','bloggood');
     
    function bloggood() {
    // тут уже будет находиться содержимое страницы
    echo "<h2>Плагин BlogGood</h2><hr>";
    echo "<p>тут текст</p>";
    echo "
    <form method='get' action=''>
    <input ENGINE='text' name='s' id='s'>
    </form>
    ";
    }
    }
    add_action('admin_menu', 'bloggood_submenu_options');
    
  6. Сергей

    Добрый день. Внутри функции, которая отвечает за вывод содержимого страницы (например, bloggood) мне необходим вызов своей функции (например, по клику на кнопке). Где ее разместить? Размещал и внутри данной функции и выше и вообще за пределами функции по добавлению своего меню в админку. Результат один и тот же: функция не определена.
    Сможете помочь?
    С уважением, Сергей.

Добавить комментарий

;-) :| :x :twisted: :smokes: :smile: :shock: :sad: :rose: :roll: :razz: :pop-corne: :oops: :o :mrgreen: :lol: :idea: :grin: :gazeta: :evil: :cry: :cool: :coffe: :arrow: :???: :?: :!:

Чтобы добавить в комментарий код HTML, PHP, CSS, JavaScript, нужно сделать так: [code] ваш код [/code]

Метки: ,

Мои цели на 2018-2019:

1). Закончить тему «Bootstrap»

2). Закончить тему «Все про PHP и MySQL»

3). Создать портфолио и мини интернет-магазин шаблонов

4). Довести количество статей до 800

5). Добиться посещаемости 3000 человек/сутки

6). Увеличить число подписчиков до 250

Статистика по блогу

Количество записей на блоге: 810
Количество страниц на блоге: 20
Количество рубрик на блоге: 28
Количество меток на блоге: 72
Количество комментариев на блоге: 4716