Административная часть

Настройка административной части

Добавление функций

admin/class-my-plugin-admin.php

/**
     * Регистрируем административное меню этого плагина в...
     */
	public function add_plugin_admin_menu() {

     /** 
		* Добавляем пункт меню плагина в "настройки".
     */
        add_options_page( $this->plugin_name, $this->plugin_name, 'manage_options', $this->plugin_name, array($this, 'display_plugin_setup_page')
        );
        
     /** 
   	  * Добавляем пункт (страницу) верхнего уровня в меню админ-панели (боковая панель)
     */
        add_menu_page("Система записи", "Система записи", "manage_options", $this->plugin_name, array($this, 'display_plugin_setup_page'), "dashicons-calendar-alt");
       }
    
    }

Регистрация функций

Файл includes/class-my-plugin.php

Функция define_admin_hooks()

$this->loader->add_action( 'admin_menu', $plugin_admin, 'add_plugin_admin_menu' );

Страница администрирования

admin/partials/my-plugin-admin-display.php

По сути страница настроек плагина - это простая форма, и тут можно использовать любые элементы форм. Например, текстовые поля позволят выводить телефоны или подписи пользователей. Чекбосксы, списки и кнопки, все может пойти в ход. Принцип обработки данных схож и не вызовет затруднений. Для того, что бы вы могли правильно оформить html код поля следует установить плагин WordPress Admin Style, он демонстрирует примеры как правильно оформить любой тип элемента формы, с учётом дальнейшей локализации.

 <--Пример->
 <form method="post" name="my_options" action="options.php">
 
        <?php

        // Загрузить все значения элементов формы
        $options = get_option($this->plugin_name);

        // текущие состояние опций
        $footer_text = $options['footer_text'];

        // Выводит скрытые поля формы на странице настроек
        settings_fields( $this->plugin_name );
        do_settings_sections( $this->plugin_name );
        
        ?>

    <h2><?php echo esc_html( get_admin_page_title() ); ?></h2>

        <fieldset>
            <legend class="screen-reader-text"><span><?php _e('Text in the footer', $this->plugin_name);?></span></legend>
            <label for="<?php echo $this->plugin_name;?>-footer_text">
                <span><?php esc_attr_e('Text in the footer', $this->plugin_name);?></span>
            </label>
            <input type="text"
                   class="regular-text" id="<?php echo $this->plugin_name;?>-footer_text"
                   name="<?php echo $this->plugin_name;?>[footer_text]"
                   value="<?php if(!empty($footer_text)) esc_attr_e($footer_text, $this->plugin_name);?>"
                   placeholder="<?php esc_attr_e('Text in the footer', $this->plugin_name);?>"
            />
        </fieldset>

        <?php submit_button(__('Save all changes', $this->plugin_name), 'primary','submit', TRUE); ?>

  </form>

Last updated