Функция добавляет элемент административного меню верхнего уровня и страницу к нему.
Читайте отдельный урок про создание страниц настроек в админке WordPress.
Возвращает хук созданной страницы, который можно использовать в других функциях, подробнее в примере 4.
Функция должна быть использована внутри одного из следующих хуков:
admin_menu
network_admin_menu
– при создании страницы меню WordPress Мультсайт.Если у вас возникает ошибка «Извините, вам не разрешено просматривать эту страницу» («You do not have sufficient permissions to access this page») плюс страница отображается в самом низу админ-меню, то как раз это означает, что вы подключили функцию на неправильный хук, вероятнее всего слишком рано.
add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '', $position = null )
true_function
, либо в виде массива, если вы хотите использовать метод класса array( $this, 'true_function' )
<path>
атрибутом fill="black"
, которая будет автоматически подстроена под текущую цветовую схему, тогда параметр будет начинаться с data:image/svg+xml;base64,
например:
$icon_url = 'data:image/svg+xml;base64,' . base64_encode( '<svg width="20" height="20"><path fill="black"></path></svg>'); add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url );
dashicons-images-alt2
.none
, чтобы задать иконку через CSS.get_stylesheet_directory_uri() . '/icon.png'
.Значение $position | Элемент меню |
---|---|
2 | Консоль |
4 | {Разделитель} |
5 | Записи |
10 | Медиафайлы |
15 | Ссылки (уже почти не встречается) |
20 | Страницы |
25 | Комментарии |
59 | {Разделитель} |
60 | Внешний вид |
65 | Плагины |
70 | Пользователи |
75 | Инструменты |
80 | Настройки |
99 | {Разделитель} |
Для меню мультисайта WordPress:
Значение $position | Элемент меню |
---|---|
2 | Консоль |
4 | {Разделитель} |
5 | Сайты |
10 | Пользователи |
15 | Темы |
20 | Плагины |
25 | Настройки |
30 | Обновления |
99 | {Разделитель} |
Если вы не знаете, куда вставлять код, рекомендую почитать это.
add_action( 'admin_menu', 'true_top_menu_page', 25 ); function true_top_menu_page(){ add_menu_page( 'Настройки слайдера', // тайтл страницы 'Слайдер', // текст ссылки в меню 'manage_options', // права пользователя, необходимые для доступа к странице 'true_slider', // ярлык страницы 'true_slider_page_callback', // функция, которая выводит содержимое страницы 'dashicons-images-alt2', // иконка, в данном случае из Dashicons 20 // позиция в меню ); } function true_slider_page_callback(){ echo 'привет'; }
Рассмотрим это на примере набора иконок Font Awesome. Пошагово:
<svg..
<svg width="20" height="20"...
<path>
дописывает атрибут fill="black"
, типо <path fill="black"...
add_action( 'admin_menu', 'true_top_menu_page', 25 ); function true_top_menu_page(){ add_menu_page( 'Настройки слайдера', 'Слайдер', 'manage_options', 'true_slider', 'true_slider_page_callback', 'data:image/svg+xml;base64,' . base64_encode( '<svg width="20" height="20" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path fill="black" d="M704 576q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1024 384v448h-1408v-192l320-320 160 160 512-512zm96-704h-1600q-13 0-22.5 9.5t-9.5 22.5v1216q0 13 9.5 22.5t22.5 9.5h1600q13 0 22.5-9.5t9.5-22.5v-1216q0-13-9.5-22.5t-22.5-9.5zm160 32v1216q0 66-47 113t-113 47h-1600q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1600q66 0 113 47t47 113z"/></svg>', 20 ); } function true_slider_page_callback(){ echo 'привет'; }
В результате получаем классную иконку:
Если вы хотите добавить элемент в меню мультисайта, то это уже не получится сделать, вставив код обычным способом в functions.php
, для этого вам понадобится создать плагин и активировать его для сети.
/* * Plugin name: Меню для мультисайта * Author: Миша Рудрастых * Author URI: https://misha.agency * Network: true */ add_action( 'network_admin_menu', function(){ add_menu_page( 'Настройки слайдера', 'Слайдер', 'manage_options', 'true_page', 'true_page_callback', 'dashicons-images-alt', 20 ); }); function true_page_callback(){ echo 'привет, мультисайт'; }
В этом примере решил собрать для вас сразу разные полезности.
class trueMenuPage{ function __construct(){ add_action( 'admin_menu', array( $this, 'add' ), 25 ); } function add(){ $hook_suffix = add_menu_page( 'Настройки слайдера', 'Слайдер', 'manage_options', 'true_slider', array( $this, 'display' ), 'dashicons-images-alt2', 20 ); // используем хук admin_print_scripts-{$hook_suffix} для вывода скриптов только на нашей странице add_action( 'admin_print_scripts-' . $hook_suffix, array( $this, 'script' ) ); } function display(){ echo '<div class="wrap"><h2>' . get_admin_page_title() . '</h2></div>'; // можем использовать функцию get_admin_page_title(), чтобы динамически вывести "Настройки слайдера" } function script(){ echo '<script>alert(\'test\')</script>'; } } new trueMenuPage();
Также рекомендую свой видеокурс по созданию темы WordPress на основе готовой вёрстки.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.