Поиск…


Вступление

Эта функция заключается в добавлении элемента в навигационную панель админ-панели.

Синтаксис

  • 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 .
Используя ООП, мы можем хранить общие переменные, которые будут использоваться среди внутренних методов.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow