WordPress
add_menu_page ()
Поиск…
Вступление
Эта функция заключается в добавлении элемента в навигационную панель админ-панели.
Синтаксис
- add_menu_page ($ page_title, $ menu_title, $ возможность, $ menu_slug, $ function, $ icon_url, $ position)
параметры
параметр | подробности |
---|---|
$ page_title | (строка) Текст, который будет отображаться в тегах заголовка страницы при выборе меню. |
$ menu_title | (строка) Текст, который будет использоваться для меню. |
$ возможности | (строка) Возможности, необходимые для отображения этого меню пользователю. |
$ menu_slug | (строка) Имя slug для ссылки на это меню (должно быть уникальным для этого меню). |
функция $ | (вызываемый) (необязательно) Функция, вызываемая для вывода содержимого для этой страницы. |
$ icon_url | (строка) (необязательно) URL-адрес значка, который будет использоваться для этого меню. |
$ позиция | (int) (необязательно) Позиция в порядке меню, чтобы она появилась. |
замечания
Ниже приведен список позиций по умолчанию (для позиции $)
- 2 - Панель приборов
- 4 - Сепаратор
- 5 - Сообщения
- 10 - Медиа
- 15 - Ссылки
- 20 - Страницы
- 25 - Комментарии
- 59 - Сепаратор
- 60 - Внешний вид
- 65 - Плагины
- 70 - Пользователи
- 75 - Инструменты
- 80 - Настройки
- 99 - разделитель
Добавление элемента «Заголовок страницы темы» на панель навигации
Код
function add_the_theme_page(){
add_menu_page('Theme page title', 'Theme menu label', 'manage_options', 'theme-options', 'page_content', 'dashicons-book-alt');
}
add_action('admin_menu', 'add_the_theme_page');
function page_content(){
echo '<div class="wrap"><h2>Testing</h2></div>';
}
Выход
объяснение
В коде мы создали функцию с именем add_the_theme_page
и мы использовали add_menu_page
для добавления элемента в навигационную панель. Пожалуйста, проверьте часть параметров на этой странице, чтобы узнать о переданных нами аргументах. Затем мы использовали add_action
для запуска нашей функции add_the_theme_page
. Наконец, мы создали функцию page_content
для отображения содержимого на странице.
OOP и как загрузить скрипты / стили на странице меню
<?php
/*
* Plugin Name: Custom Admin Menu
*/
class SO_WP_Menu {
private $plugin_url;
public function __construct() {
$this->plugin_url = plugins_url( '/', __FILE__ );
add_action( 'plugins_loaded', array( $this, 'init' ) );
}
public function init() {
add_action( 'admin_menu', array( $this, 'add_menu' ) );
}
public function add_menu() {
$hook = add_menu_page(
'My Menu', // Title, html meta tag
'<span style="color:#e57300;">My Menu</span>', // Menu title, hardcoded style
'edit_pages', // capability
'dummy-page-slug', // URL
array( $this, 'content' ), // output
null, // icon, uses default
1 // position, showing on top of all others
);
add_action( "admin_print_scripts-$hook", array( $this, 'scripts' ) );
add_action( "admin_print_styles-$hook", array( $this, 'styles' ) );
}
public function content() {
?>
<div id="icon-post" class="icon32"></div>
<h2>Dummy Page</h2>
<p> Lorem ipsum</p>
<?php
}
# Printing directly, could be wp_enqueue_script
public function scripts() {
?><script>alert('My page');</script><?php
}
# Enqueing from a CSS file on plugin directory
public function styles() {
wp_enqueue_style( 'my-menu', $this->plugin_url . 'my-menu.css' );
}
}
new SO_WP_Menu();
Важно отметить, что при использовании add_menu_page()
он возвращает крючок, который можно использовать для таргетинга на нашу точную страницу и загрузки стилей и скриптов.
Распространенная ошибка заключается в том, чтобы входить в очередь без таргетинга, и это проливает скрипты и стили по всему /wp-admin
.
Используя ООП, мы можем хранить общие переменные, которые будут использоваться среди внутренних методов.