/ Сайтостроение / Плагины / Элементы управления плагином

Элементы управления плагином

15.08.2016

627

При реализации плагина часто требуется выводить в админку элменеты управления:

  • Включение/отключение какой-либо функции
  • Ввод информации, либо изображения
  • Выбор чего-либо из списка
  • и т.д.

Для данного функционала можно также использовать Theme Customizer, но одним недостатком этого метода является то, что настройки будут находится в интерфейсе Theme Customizer (Внешний вид > Настроить).

Создаем меню элемента управления

function true_options() {
	global $true_page;
	add_plugins_page( 'Управление модулями', 'Управление модулями', 'manage_options', 'my-plugin.php', 'true_option_page');  
}
add_action('admin_menu', 'true_options');

Для того, чтобы добавить подменю уже в существующие стандартные пункты меню используется функции:

  • add_dashboard_page — Добавляет подменю в меню Консоль (Dashboard)
  • add_posts_page — Добавляет подменю в меню Записи (Posts)
  • add_media_page — Добавляет подменю в меню Медиафайлы (Media)
  • add_links_page — Добавляет подменю в меню Ссылки (Links)
  • add_pages_page — Добавляет подменю в меню Страницы (Pages)
  • add_comments_page — Добавляет подменю в меню Комментарии (Comments)
  • add_theme_page — Добавляет подменю в меню Внешний вид (Appearance)
  • add_plugins_page — Добавляет подменю в меню Плагины (Plugins)
  • add_users_page — Добавляет подменю в меню Пользователи (Users)
  • add_management_page — Добавляет подменю в меню Инструменты (Tools)
  • add_options_page — Добавляет подменю в меню Параметры (Settings)

Далее создаем функцию вывода — то что будет на странице настроек

// Возвратная функция (Callback)
function true_option_page(){
 global $true_page;
 ?><div class="wrap">
 <h2>Дополнительные параметры сайта</h2>
 <form method="post" enctype="multipart/form-data" action="options.php">
 <?php 
 settings_fields('true_options'); // меняем под себя только здесь (название настроек)
 do_settings_sections($true_page);
 ?>
 <p class="submit"> 
 <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /> 
 </p>
 </form>
 </div><?php
}

И далее функции регистрации и создания полей управления

// Регистрируем настройки
// Настройки будут храниться в базе под названием true_options (это также видно в предыдущей функции)
function true_option_settings() {
global $true_page;
// Присваиваем функцию валидации ( true_validate_settings() ). Вы найдете её ниже
register_setting( 'true_options', 'true_options', 'true_validate_settings' ); // true_options

// Добавляем секцию
add_settings_section( 'true_section_1', 'Текстовые поля ввода', '', $true_page );

// Создадим текстовое поле в первой секции
$true_field_params = array(
'type' => 'text', // тип
'id' => 'my_text',
'desc' => 'Пример обычного текстового поля.', // описание
'label_for' => 'my_text' // позволяет сделать название настройки лейблом (если не понимаете, что это, можете не использовать), по идее должно быть одинаковым с параметром id
);
add_settings_field( 'my_text_field', 'Текстовое поле', 'true_option_display_settings', $true_page, 'true_section_1', $true_field_params );

// Создадим textarea в первой секции
$true_field_params = array(
'type' => 'textarea',
'id' => 'my_textarea',
'desc' => 'Пример большого текстового поля.'
);
add_settings_field( 'my_textarea_field', 'Большое текстовое поле', 'true_option_display_settings', $true_page, 'true_section_1', $true_field_params );

// Добавляем вторую секцию настроек

add_settings_section( 'true_section_2', 'Другие поля ввода', '', $true_page );

// Создадим чекбокс
$true_field_params = array(
'type' => 'checkbox',
'id' => 'my_checkbox',
'desc' => 'Пример чекбокса.'
);
add_settings_field( 'my_checkbox_field', 'Чекбокс', 'true_option_display_settings', $true_page, 'true_section_2', $true_field_params );

// Создадим выпадающий список
$true_field_params = array(
'type' => 'select',
'id' => 'my_select',
'desc' => 'Пример выпадающего списка.',
'vals' => array( 'val1' => 'Значение 1', 'val2' => 'Значение 2', 'val3' => 'Значение 3')
);
add_settings_field( 'my_select_field', 'Выпадающий список', 'true_option_display_settings', $true_page, 'true_section_2', $true_field_params );

// Создадим радио-кнопку
$true_field_params = array(
'type' => 'radio',
'id' => 'my_radio',
'vals' => array( 'val1' => 'Значение 1', 'val2' => 'Значение 2', 'val3' => 'Значение 3')
);
add_settings_field( 'my_radio', 'Радио кнопки', 'true_option_display_settings', $true_page, 'true_section_2', $true_field_params );

}
add_action( 'admin_init', 'true_option_settings' );


// Функция отображения полей ввода
// Здесь задаётся HTML и PHP, выводящий поля

function true_option_display_settings($args) {
extract( $args );

$option_name = 'true_options';

$o = get_option( $option_name );

switch ( $type ) {
case 'text':
$o[$id] = esc_attr( stripslashes($o[$id]) );
echo "<input class='regular-text' type='text' id='$id' name='" . $option_name . "[$id]' value='$o[$id]' />";
echo ($desc != '') ? "<br /><span class='description'>$desc</span>" : "";
break;
case 'textarea':
$o[$id] = esc_attr( stripslashes($o[$id]) );
echo "<textarea class='code large-text' cols='50' rows='10' type='text' id='$id' name='" . $option_name . "[$id]'>$o[$id]</textarea>";
echo ($desc != '') ? "<br /><span class='description'>$desc</span>" : "";
break;
case 'checkbox':
$checked = ($o[$id] == 'on') ? " checked='checked'" : '';
echo "<label><input type='checkbox' id='$id' name='" . $option_name . "[$id]' $checked /> ";
echo ($desc != '') ? $desc : "";
echo "</label>";
break;
case 'select':
echo "<select id='$id' name='" . $option_name . "[$id]'>";
foreach($vals as $v=>$l){
$selected = ($o[$id] == $v) ? "selected='selected'" : '';
echo "<option value='$v' $selected>$l</option>";
}
echo ($desc != '') ? $desc : "";
echo "</select>";
break;
case 'radio':
echo "<fieldset>";
foreach($vals as $v=>$l){
$checked = ($o[$id] == $v) ? "checked='checked'" : '';
echo "<label><input type='radio' name='" . $option_name . "[$id]' value='$v' $checked />$l</label><br />";
}
echo "</fieldset>";
break;
}
}

Поделится информацией с друзьями

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Элементы управления плагином
Мини-корзина в Header
Рекомендации для васМини-корзина в HeaderOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.