Добавление в административную часть
add_menu_page()
Функция добавляет элемент административного меню верхнего уровня и страницу к нему.
Функция должна быть использована внутри одного из следующих хуков:
admin_menunetwork_admin_menu– при создании страницы меню WordPress Мультсайт.
Если у вас возникает ошибка «Извините, вам не разрешено просматривать эту страницу» («You do not have sufficient permissions to access this page») плюс страница отображается в самом низу админ-меню, то как раз это означает, что вы подключили функцию на неправильный хук, вероятнее всего слишком рано.
Параметры
$page_title(строка) То, что будет отображаться в заголовке вкладки браузера при переходе на эту страницу.
$menu_title(строка) То, как будет называться непосредственно элемент в меню.
$capability(строка) Права, которые необходимо иметь пользователю для просмотра этой страницы.
$menu_slug(строка) Часть URL этой страницы. Должен быть уникальным, содержать только буквы нижнего регистра латинского алфавита, цифры, дефисы и символы подчёркивания, всё остальное будет очищено функцией sanitize_key()
$function(строка) Название функции, которая будет выводить HTML этой страницы либо в виде строки, например true_function, либо в виде массива, если вы хотите использовать метод класса array( $this, 'true_function' )
$icon_url(строка) Иконка меню. Можно задать тремя способами
$positionРасположение пункта меню по отношению к другим пунктам меню в админке. Чем меньше цифра, тем выше пункт меню, и наоборот.
Пример использования add_menu_page()
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 'привет';
}
Вывод меню на сайте
wp_nav_menu( array $args = array() )
Прежде всего функция wp_nav_menu() чекает параметр theme_location и выводит соответствующее меню, ассоциирующееся с этой областью темы. Если это области не существует или нет меню, присвоенного к этой области, то будет выполнены функция в параметре fallback_cb.
Если же параметр theme_location не задан вообще, тогда:
- Сначала функция попробует вывести меню по ID, ярлыку или имени, указанному в параметре
menu. - Иначе – первое непустое меню, созданное в админке.
- Иначе – выполнится функция в параметре
fallback_cb(или же функцияwp_page_menu(), как значение по умолчанию). - Иначе – ничего.