Руководство разработчика плагинов для WordPress (часть 29)

Использование Settings API

Добавление настроек

Вы должны определить новую настройку, используя register_setting(), это создаст новый элемент в таблице {$wpdb→prefix}_options.

Вы можете добавлять новые секции для существующих страниц, используя add_settings_section().

Вы можете добавлять новые поля к существующим секциям, используя add_settings_field().

register_setting(), также как и уже упомянутые функции add_settings_*(), все должны быть добавлены к зацепке admin_init.

Добавление настройки

 register_setting( 
    string $option_group, 
    string $option_name, 
    callable $sanitize_callback = ''
 );
 

Пожалуйста, прочтите Справку по функциям о register_setting() для полного понимания значений использованных параметров.

Добавление секции

  
 add_settings_section( 
    string $id, 
    string $title, 
    callable $callback, 
    string $page
 );
 

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

Пожалуйста, посмотрите Справку по функциям о add_settings_section() для полного понимания использованных параметров.

Добавление поля

 add_settings_field(
    string $id, 
    string $title, 
    callable $callback, 
    string $page, 
    string $section = 'default', 
    array $args = []
 );
 

Пожалуйста, прочтите Справку по функциям о add_settings_field() для понимания использованных параметров.

Пример

 <?php
 function wporg_settings_init()
 {
    // register a new setting for "reading" page
    register_setting('reading', 'wporg_setting_name');
 
    // register a new section in the "reading" page
    add_settings_section(
        'wporg_settings_section',
        'WPOrg Settings Section',
        'wporg_settings_section_cb',
        'reading'
    );
 
    // register a new field in the "wporg_settings_section" section, inside the "reading" page
    add_settings_field(
        'wporg_settings_field',
        'WPOrg Setting',
        'wporg_settings_field_cb',
        'reading',
        'wporg_settings_section'
    );
 }
 
 /**
  * register wporg_settings_init to the admin_init action hook
  */
 add_action('admin_init', 'wporg_settings_init');
 
 /**
  * callback functions
  */
 
 // section content cb
 function wporg_settings_section_cb()
 {
    echo '<p>WPOrg Section Introduction.</p>';
 }
 
 // field content cb
 function wporg_settings_field_cb()
 {
    // get the value of the setting we've registered with register_setting()
    $setting = get_option('wporg_setting_name');
    // output the field
    ?>
    <input type="text" name="wporg_setting_name" value="<?php echo isset( $setting ) ? esc_attr(    $setting ) : ''; ?>">
    <?php
 }
 

Получение настроек

 get_option(
    string $option,
    mixed $default = false
 );
 

Получение настроек производится с помощью функции get_option(). Данная функция принимает два параметра: имя опции и опциональное значение по умолчанию для данной опции.

Пример

 // get the value of the setting we've registered with register_setting()
 $setting = get_option('wporg_setting_name');

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