Статьи

Как использовать WordPress Color Picker API

Когда команда WordPress выпускает новую версию, они представляют некоторые новые функции не только для пользователей, но и для разработчиков. WordPress предлагает множество инструментов, которые облегчают разработку новых фантастических тем или плагинов.

Одним из последних API, доступных для разработчиков WordPress, является новый Color Picker; эта функция позволяет заменить стандартное текстовое поле приятным и удобным для пользователя палитрой цветов.

В этом уроке я покажу вам, как добавить палитру цветов в ваш проект WordPress. Давайте начнем.


Есть несколько интересных причин, по которым разработчики WordPress должны реализовывать выбор цветов с помощью нового API выбора:

  • Это обеспечивает более быстрый и простой способ выбора цвета.
  • Пользователям не нужно беспокоиться о том, какой формат цвета они должны вводить — шестнадцатеричный, RBG и так далее.
  • Вообще говоря, это обеспечивает в целом лучшее взаимодействие с пользователем.
  • Ваши страницы панели инструментов будут интегрированы с пользовательским интерфейсом WordPress.
  • Это обеспечивает более легкую входную проверку значения поля цвета.
  • В результате получается более профессиональный конечный продукт, поскольку он использует встроенные элементы управления.

После того, как мы рассмотрим некоторые из основных аспектов WordPress Color Picker, давайте добавим его в наш плагин или тему.


Прежде чем продолжить, я должен указать, что Color Picker API был представлен в WordPress версии 3.5, поэтому для работы с этим учебником убедитесь, что у вас установлена ​​версия 3.5 или новее.

Чтобы добавить палитру цветов, просто включите файл jQuery и файл таблицы стилей. Строки кода ниже показывают, как это сделать.

01
02
03
04
05
06
07
08
09
10
11
12
add_action( ‘admin_enqueue_scripts’, ‘wptuts_add_color_picker’ );
function wptuts_add_color_picker( $hook ) {
 
    if( is_admin() ) {
     
        // Add the color picker css file
        wp_enqueue_style( ‘wp-color-picker’ );
         
        // Include our custom jQuery file with WordPress Color Picker dependency
        wp_enqueue_script( ‘custom-script-handle’, plugins_url( ‘custom-script.js’, __FILE__ ), array( ‘wp-color-picker’ ), false, true );
    }
}

Обратите внимание, что когда мы включили custom-script.js с зависимостью wp-color-picker . Теперь вы можете применить палитру цветов к вашим текстовым полям внутри вашего файла jQuery.

1
2
3
4
5
6
7
8
(function( $ ) {
 
    // Add Color Picker to all inputs that have ‘color-field’ class
    $(function() {
        $(‘.color-field’).wpColorPicker();
    });
     
})( jQuery );

На этом этапе пришло время показать, как интегрировать Color Picker в настоящий плагин.

Вот что мы собираемся охватить:

  • Как добавить страницу параметров панели мониторинга, которая имитирует страницу настроек темы.
  • Как добавить поля настроек, подготовленные для палитры цветов.
  • Как проверить и сохранить входные данные.

Как только вы настроите свой плагин в папке WordPress wp-content/plugins мы готовы начать. На рисунке ниже показано, как я структурировал плагин для этого урока.

Структура плагина

Внутри файла color-picker-plugin.php напишите комментарии с информацией о плагине и создайте новый класс PHP с именем CPA_Theme_Options . Код ниже показывает все методы класса, которые мы собираемся реализовать, шаг за шагом.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*
Plugin Name: Color Picker API
Plugin URI: http://code.tutsplus.com
Description: Demo about the new Color Picker API
Version: 1.0
Author: code.tutsplus.com
Author URI: http://code.tutsplus.com
*/
 
/**
 * Main Class — CPA stands for Color Picker API
 */
class CPA_Theme_Options {
  
    /*———————————————*
     * Attributes
     *———————————————*/
  
    /** Refers to a single instance of this class.
    private static $instance = null;
     
    /* Saved options */
    public $options;
  
    /*———————————————*
     * Constructor
     *———————————————*/
  
    /**
     * Creates or returns an instance of this class.
     *
     * @return CPA_Theme_Options A single instance of this class.
     */
    public static function get_instance() {
  
        if ( null == self::$instance ) {
            self::$instance = new self;
        }
  
        return self::$instance;
  
    } // end get_instance;
  
    /**
     * Initializes the plugin by setting localization, filters, and administration functions.
     */
    private function __construct() { }
  
    /*———————————————*
     * Functions
     *———————————————*/
      
    /**
     * Function that will add the options page under Setting Menu.
     */
    public function add_page() { }
      
    /**
     * Function that will display the options page.
     */
    public function display_page() { }
       
    /**
     * Function that will register admin page options.
     */
    public function register_page_options() { }
     
    /**
     * Function that will add javascript file for Color Piker.
     */
    public function enqueue_admin_js() { }
     
    /**
     * Function that will validate all fields.
     */
    public function validate_options( $fields ) { }
     
    /**
     * Function that will check if value is a valid HEX color.
     */
    public function check_color( $value ) { }
     
    /**
     * Callback function for settings section
     */
    public function display_section() { /* Leave blank */ }
     
    /**
     * Functions that display the fields.
     */
    public function title_settings_field() { }
     
    public function bg_settings_field( ) { }
         
} // end class
  
CPA_Theme_Options::get_instance();

Сначала давайте реализуем конструктор класса. Код ниже показывает, что плагин будет делать, когда будет создан новый экземпляр.

Это будет:

  • добавить новую страницу параметров в разделе «Настройки» в меню администратора WordPress
  • зарегистрировать поля настроек на странице настроек
  • добавить таблицу стилей CSS для палитры цветов WordPress
  • добавить пользовательский файл JavaScript, который вызывает Color Picker
  • установите атрибут параметров с сохраненными настройками.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
private function __construct() {
 
    // Add the page to the admin menu
    add_action( ‘admin_menu’, array( &$this, ‘add_page’ ) );
     
    // Register page options
    add_action( ‘admin_init’, array( &$this, ‘register_page_options’) );
     
    // Css rules for Color Picker
    wp_enqueue_style( ‘wp-color-picker’ );
     
    // Register javascript
    add_action(‘admin_enqueue_scripts’, array( $this, ‘enqueue_admin_js’ ) );
     
    // Get registered option
    $this->options = get_option( ‘cpa_settings_options’ );
}

Следующий шаг посвящен тому, как добавить страницу параметров и как ее отобразить.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
 * Function that will add the options page under Setting Menu.
 */
public function add_page() {
     
    // $page_title, $menu_title, $capability, $menu_slug, $callback_function
    add_options_page( ‘Theme Options’, ‘Theme Options’, ‘manage_options’, __FILE__, array( $this, ‘display_page’ ) );
}
 
/**
 * Function that will display the options page.
 */
public function display_page() {
    ?>
    <div class=»wrap»>
     
        <h2>Theme Options</h2>
        <form method=»post» action=»options.php»>
        <?php
            settings_fields(__FILE__);
            do_settings_sections(__FILE__);
            submit_button();
        ?>
        </form>
    </div> <!— /wrap —>
    <?php
}

Обратите внимание, что мы уже написали — внутри метода display_page() — код, который будет добавлять форму, поля и кнопку отправки для регистрации параметров страницы.

На этом шаге мы собираемся реализовать методы, которые будут регистрировать и отображать два поля настроек: поле « Название блога» и поле « Цвет фона» . Оба поля принадлежат разделу параметров темы .

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
 * Function that will register admin page options.
 */
public function register_page_options() {
     
    // Add Section for option fields
    add_settings_section( ‘cpa_section’, ‘Theme Options’, array( $this, ‘display_section’ ), __FILE__ );
     
    // Add Title Field
    add_settings_field( ‘cpa_title_field’, ‘Blog Title’, array( $this, ‘title_settings_field’ ), __FILE__, ‘cpa_section’ );
     
    // Add Background Color Field
    add_settings_field( ‘cpa_bg_field’, ‘Background Color’, array( $this, ‘bg_settings_field’ ), __FILE__, ‘cpa_section’ );
     
    // Register Settings
    register_setting( __FILE__, ‘cpa_settings_options’, array( $this, ‘validate_options’ ) );
}
 
/**
 * Functions that display the fields.
 */
public function title_settings_field() {
     
    $val = ( isset( $this->options[‘title’] ) ) ?
    echo ‘<input type=»text» name=»cpa_settings_options[title]» value=»‘ . $val . ‘» />’;
}
 
public function bg_settings_field() {
     
    $val = ( isset( $this->options[‘title’] ) ) ?
    echo ‘<input type=»text» name=»cpa_settings_options[background]» value=»‘ . $val . ‘» class=»cpa-color-picker» >’;
     
}

Эти шаги направлены на проверку. Код ниже показывает, как проверить два поля перед их сохранением.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/**
 * Function that will validate all fields.
 */
public function validate_options( $fields ) {
     
    $valid_fields = array();
     
    // Validate Title Field
    $title = trim( $fields[‘title’] );
    $valid_fields[‘title’] = strip_tags( stripslashes( $title ) );
     
    // Validate Background Color
    $background = trim( $fields[‘background’] );
    $background = strip_tags( stripslashes( $background ) );
     
    // Check if is a valid hex color
    if( FALSE === $this->check_color( $background ) ) {
     
        // Set the error message
        add_settings_error( ‘cpa_settings_options’, ‘cpa_bg_error’, ‘Insert a valid color for Background’, ‘error’ );
         
        // Get the previous valid value
        $valid_fields[‘background’] = $this->options[‘background’];
     
    } else {
     
        $valid_fields[‘background’] = $background;
     
    }
     
    return apply_filters( ‘validate_options’, $valid_fields, $fields);
}
 
/**
 * Function that will check if value is a valid HEX color.
 */
public function check_color( $value ) {
     
    if ( preg_match( ‘/^#[a-f0-9]{6}$/i’, $value ) ) { // if user insert a HEX color with #
        return true;
    }
     
    return false;
}

Если пользователь пытается вставить код цвета вручную, палитра цветов уведомляет его или ее о том, что он / она набрал недопустимое значение в форме отправки; однако, цвет — хотя это может быть неправильно — все равно будет сохранен. Функция check_color() заботится о проверке ввода цвета.

Это последний шаг, где мы собираемся включить наш файл JavaScript, который преобразует простое текстовое поле в полезную палитру цветов.

1
2
3
4
5
6
7
8
/**
 * Function that will add javascript file for Color Piker.
 */
public function enqueue_admin_js() {
     
    // Make sure to add the wp-color-picker dependecy to js file
    wp_enqueue_script( ‘cpa_custom_js’, plugins_url( ‘jquery.custom.js’, __FILE__ ), array( ‘jquery’, ‘wp-color-picker’ ), », true );
}

Давайте создадим Файл jquery.custom.js .

1
2
3
4
5
6
7
8
(function( $ ) {
    $(function() {
         
        // Add Color Picker to all inputs that have ‘color-field’ class
        $( ‘.cpa-color-picker’ ).wpColorPicker();
         
    });
})( jQuery );

Если вы попытаетесь активировать плагин, вы должны получить страницу панели инструментов со всеми полями, как на картинке ниже:

Последняя страница администратора

Из этого урока вы узнали, как включить новую палитру цветов, работающую на WordPress. В демонстрационной версии плагина я показал вам, как интегрировать палитру цветов в настоящий плагин, но вы можете использовать API там, где вам нужно, например, внутри мета-блока, формы виджета и так далее.

Color Picker работает с WordPress 3.5+, но если у пользователя есть предыдущая версия, ваш код будет работать. Обязательно проверяйте каждый ввод цвета с помощью check_color() показанного в шаге 6 .

Теперь ваши плагины или темы станут более мощными и удобными для пользователя.