Більше результатів...

Загальні селектори
Тільки точні збіги
Шукати у заголовках
Шукати у контенті
Вибір типів постів
Фільтрувати за категоріями
FAQ
Hostenko
Натхнення
Відео уроки
Новини
Плагіни
Теми
Уроки
Хакі

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

Однією з недавніх розробок API для WordPress є новий інструмент Колір Picker для вибору кольорів. Ця опція дозволяє замінити стандартні текстові поля на привабливий та зручний color picker (вибір кольору).

inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!

Щоб зрозуміти, про що йдеться, подивіться на малюнок нижче:

WordPress Color Picker: використовуємо API інструмент вибору кольору в своїх цілях

І сьогодні ми дізнаємося, як додати цей інструмент для будь-якої теми оформлення WordPress.

Чим корисний WordPress Color Picker

Є кілька причин, виходячи з яких розробникам варто використати нову функцію для вибору кольору за допомогою color picker API:

для користувачів:

  • Можливість швидше та простіше вибирати потрібний колір
  • Широкий вибір форматів кольорів для — hexadecimal, RBG, інше
  • Забезпечується відмінний користувальницький досвід

для розробників:

  • Сторінки панелі інструментів будуть інтегровані з інтерфейсом користувача WordPress
  • Забезпечується простіша перевірка введення значення колірного поля
  • На виході виходить професійніший продукт, оскільки використовуються власні засоби управління WordPress

Ми пройшлися за основними аспектами WordPress Color Picker, а тепер давайте додамо цей інструментарій у плагін чи тему.

Включаємо Color Picker

Нагадаємо, що Color Picker API був представлений з версією WordPress 3.5, тому, щоб скористатися цим посібником, переконайтеся, що у вас встановлений реліз 3.5 або пізніший.

Щоб додати Color Picker, необхідно легко включити файл jQuery і файл таблиці стилів. Як це зробити вказано у коді нижче. Додайте цей код у файл functions.php Ваша тема оформлення.

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.

(function( $ ) {
 
    // Add Color Picker to all inputs that have 'color-field' class
    $(function() {
        $('.color-field').wpColorPicker();
    });
     
})( jQuery );

Створюємо плагін для вибору кольору через Color Picker

А тепер ви дізнаєтесь, як інтегрувати Color Picker у свій плагін.

А саме:

  • Як додати сторінку опції панелі інструментів, яка імітує сторінку налаштувань теми.
  • Як додати поля налаштувань, підготовлені спеціально для Color Picker.
  • Як перевірити та зберегти введення даних через color picker.

Крок 1.

Після того, як ви створили заготівлю плагіна в папці wp-content/plugins, можна приступати. Нижче на зображенні показано, як структурований плагін для цього уроку.

WordPress Color Picker: використовуємо API інструмент вибору кольору в своїх цілях

Крок 2.

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

/*
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();

Крок 3.

Спочатку ми запровадимо клас конструктора. У коді нижче показано, що робитиме плагін, коли буде створено новий екземпляр.

А саме:

  • додасть нову сторінку опцій під розділом "Налаштування" до адмін-меню WordPress
  • здійснить реєстрацію налаштувань полів на сторінці опцій
  • додасть таблиці стилів для WordPress Color Picker
  • додасть файл JavaScript, який викликає Color Picker
  • задасть options-атрибут зі збереженими налаштуваннями.
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' );
}

Крок 4.

Тут ми розглянемо, як додати сторінку параметрів та як її відобразити.

/**
 * 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() метод – код, за допомогою якого додадуться форми, поля та кнопка для реєстрації сторінки опцій.

Крок 5.

У цьому кроці ми впровадимо методи, які зареєструють та відобразять два поля налаштувань: Blog Title та Background Color. І те, й інше поле відноситься до розділу Theme Options.

/**
 * 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__ ); // id, title, display cb, page
     
    // Add Title Field
    add_settings_field( 'cpa_title_field', 'Blog Title', array( $this, 'title_settings_field' ), __FILE__, 'cpa_section' ); // id, title, display cb, page, section
     
    // Add Background Color Field
    add_settings_field( 'cpa_bg_field', 'Background Color', array( $this, 'bg_settings_field' ), __FILE__, 'cpa_section' ); // id, title, display cb, page, section
     
    // Register Settings
    register_setting( __FILE__, 'cpa_settings_options', array( $this, 'validate_options' ) ); // option group, option name, sanitize cb 
}
 
/**
 * Functions that display the fields.
 */
public function title_settings_field() { 
     
    $val = ( isset( $this->options['title'] ) ) ? $this->options['title'] : '';
    echo '<input type="text" name="cpa_settings_options[title]" value="' . $val . '" />';
}   
 
public function bg_settings_field() { 
     
    $val = ( isset( $this->options['title'] ) ) ? $this->options['background'] : '';
    echo '<input type="text" name="cpa_settings_options[background]" value="' . $val . '" class="cpa-color-picker" >';
     
}

Крок 6.

У цьому кроці за допомогою вказаного нижче коду показується, як перевірити два поля перед тим, як їх зберегти.

/**
 * 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' ); // $setting, $code, $message, $type
         
        // 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;
}

Коли користувач намагається вставити код кольору вручну, Color Picker показує, якщо введено неправильну комбінацію, але навіть якщо і колір вказано неправильно, він все одно буде збережено. Функція check_color() забезпечує перевірку кольору.

Крок 7.

Це останній крок, в якому ми включимо JavaScript файл, який конвертує звичайне поле для введення тексту в поле вибору кольору.

/**
 * 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

(function( $ ) {
    $(function() {
         
        // Add Color Picker to all inputs that have 'color-field' class
        $( '.cpa-color-picker' ).wpColorPicker();
         
    });
})( jQuery );

При активації плагіна ви повинні отримати сторінку панелі інструментів з усіма полями, як на малюнку нижче:

WordPress Color Picker: використовуємо API інструмент вибору кольору в своїх цілях

От і все!

Джерело: code.tutsplus.com
inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!
Олексій Шевченко
редактор wpcafe
Вивчає сайтобудування з 2008 року. Практикуючий вебмайстер, що спеціалізується на створенні сайтів WordPress. Задати питання Олексію можна на https://profiles.wordpress.org/wpthemeus/

Коментарі до запису: 0

Додати коментар або відгук