register_setting()

Регистрирует настройку и её данные
Функция WordPress
INT 2.7.0
WordPress Icon

Описание функции

Функция register_setting() регистрирует настройку и ее данные в WordPress. Она позволяет определить новую настройку и указать, как она должна быть обработана и сохранена. Регистрация настройки позволяет WordPress автоматически обрабатывать данные, связанные с этой настройкой, и предоставлять удобный интерфейс для их изменения.

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

register_setting( string $option_group, string $option_name, array $args = array() )

Функция register_setting() принимает три параметра: $option_group, $option_name и $args. Она регистрирует настройку с указанными параметрами.

  • $option_group (обязательный): Название группы настроек. Должно соответствовать допустимому ключу опции. По умолчанию допустимые ключи опций включают ‘general’, ‘discussion’, ‘media’, ‘reading’, ‘writing’ и ‘options’.
  • $option_name (обязательный): Название опции, которую нужно очистить и сохранить.
  • $args (необязательный): Данные, используемые для описания настройки при ее регистрации.
    • type (строка): Тип данных, связанных с этой настройкой. Допустимые значения: ‘string’, ‘boolean’, ‘integer’, ‘number’, ‘array’ и ‘object’.
    • description (строка): Описание данных, связанных с этой настройкой.
    • sanitize_callback (вызываемая функция): Функция обратного вызова, которая очищает значение опции.
    • show_in_rest (логическое значение или массив): Определяет, должны ли данные, связанные с этой настройкой, быть включены в REST API. При регистрации сложных настроек этот аргумент может быть массивом с ключом ‘schema’.
    • default (любой тип): Значение по умолчанию при вызове функции get_option(). По умолчанию: array().
<?php
/**
 * Регистрация настройки "my_custom_setting".
 *
 * @param string $option_group Название группы настроек.
 * @param string $option_name Название опции.
 * @param array $args Дополнительные параметры настройки.
 */
register_setting( 'my_settings_group', 'my_custom_setting', array(
    'type'              => 'string',
    'description'       => 'Описание настройки',
    'sanitize_callback' => 'my_custom_sanitize_function',
    'show_in_rest'      => true,
    'default'           => 'default_value'
) );
/**
 * Функция обратного вызова для очистки значения опции.
 *
 * @param mixed $value Значение опции.
 * @return mixed Очищенное значение опции.
 */
function my_custom_sanitize_function( $value ) {
    // Очистка значения опции.
    return sanitize_text_field( $value );
}
?>

В этом примере мы регистрируем настройку с названием «my_custom_setting» в группе настроек «my_settings_group». Мы указываем, что тип данных этой настройки — строка, и добавляем описание. Также мы указываем функцию обратного вызова my_custom_sanitize_function(), которая будет использоваться для очистки значения опции. Мы также включаем данные этой настройки в REST API и устанавливаем значение по умолчанию «default_value».

Примеры использования

Регистрация настроек для группы опций


/**
 * Register settings for the 'general' option group.
 */
register_setting( 'general', 'my_option', array(
    'type'              => 'string',
    'description'       => 'My option description',
    'sanitize_callback' => 'sanitize_text_field',
    'show_in_rest'      => true,
    'default'           => 'Default value',
) );

Сохранение значения опции


/**
 * Save the value of the 'my_option' option.
 */
function save_my_option() {
    $value = $_POST['my_option'];
    update_option( 'my_option', $value );
}
add_action( 'admin_post_save_my_option', 'save_my_option' );

Санитизация значения опции


/**
 * Sanitize the value of the 'my_option' option.
 *
 * @param mixed $value The value to sanitize.
 * @return mixed Sanitized value.
 */
function sanitize_my_option( $value ) {
    // Sanitize the value here.
    return $value;
}
add_filter( 'sanitize_option_my_option', 'sanitize_my_option' );

Включение данных в REST API


/**
 * Include the 'my_option' data in the REST API response.
 *
 * @param array $response The REST API response.
 * @return array Modified REST API response.
 */
function include_my_option_in_rest( $response ) {
    $my_option = get_option( 'my_option' );
    $response['my_option'] = $my_option;
    return $response;
}
add_filter( 'rest_prepare_settings', 'include_my_option_in_rest' );

Вопросы и ответы

Как зарегистрировать новую настройку?

Для регистрации новой настройки в WordPress используется функция register_setting(). Она принимает три параметра: $option_group, $option_name и $args.

$option_group — это имя группы настроек, которое должно соответствовать допустимому ключу опции. В WordPress уже предопределены некоторые допустимые ключи опций, такие как ‘general’, ‘discussion’, ‘media’, ‘reading’, ‘writing’ и ‘options’.

$option_name — это имя опции, которую нужно очистить и сохранить.

$args — это массив данных, используемых для описания настройки при ее регистрации. В массиве можно указать тип данных, описание, функцию очистки значений опции и другие параметры.


register_setting( 'general', 'my_option', array(
    'type'              => 'string',
    'description'       => 'My custom option',
    'sanitize_callback' => 'sanitize_text_field',
    'show_in_rest'      => true,
    'default'           => 'default value'
) );

Какой должен быть тип данных для зарегистрированной настройки?

Для зарегистрированной настройки можно указать следующие типы данных: ‘string’, ‘boolean’, ‘integer’, ‘number’, ‘array’ и ‘object’.


register_setting( 'general', 'my_option', array(
    'type' => 'string',
) );

Как описать данные, связанные с зарегистрированной настройкой?

Для описания данных, связанных с зарегистрированной настройкой, можно использовать параметр description. В этом параметре можно указать описание данных, которые прикреплены к данной настройке.


register_setting( 'general', 'my_option', array(
    'description' => 'My custom option',
) );

Какой должна быть функция обратного вызова для санитизации значения настройки?

Функция обратного вызова для санитизации значения настройки должна быть определена в параметре sanitize_callback при регистрации настройки с помощью функции register_setting(). Эта функция должна принимать один аргумент — значение настройки, и возвращать санитизированное значение.

Пример:


function sanitize_callback_example($value) {
    // Санитизация значения настройки
    $sanitized_value = sanitize_text_field($value);
    return $sanitized_value;
}
register_setting('general', 'example_setting', array(
    'sanitize_callback' => 'sanitize_callback_example',
));

Как включить данные, связанные с настройкой, в REST API?

Для включения данных, связанных с настройкой, в REST API, необходимо установить параметр show_in_rest в значение true при регистрации настройки с помощью функции register_setting().

Пример:


register_setting('general', 'example_setting', array(
    'show_in_rest' => true,
));

Как установить значение по умолчанию для зарегистрированной настройки?

Значение по умолчанию для зарегистрированной настройки можно установить с помощью параметра default при регистрации настройки с помощью функции register_setting().

Пример:


register_setting('general', 'example_setting', array(
    'default' => 'default_value',
));

Как получить значение зарегистрированной настройки?

Для получения значения зарегистрированной настройки в WordPress используется функция get_option(). Эта функция принимает один параметр — имя настройки, и возвращает ее значение.


$option_value = get_option( 'option_name' );

Как изменить значение зарегистрированной настройки?

Для изменения значения зарегистрированной настройки в WordPress используется функция update_option(). Эта функция принимает два параметра — имя настройки и новое значение.


update_option( 'option_name', 'new_value' );

Как удалить зарегистрированную настройку?

Для удаления зарегистрированной настройки в WordPress используется функция unregister_setting(). Эта функция принимает два параметра — имя группы настроек и имя настройки.


unregister_setting( 'option_group', 'option_name' );

Функция register_setting() в WordPress используется для регистрации настроек и их данных. Она позволяет задать тип данных, описание, функцию санитизации и другие параметры для настройки. Зарегистрированные настройки могут быть получены с помощью функции get_option(), изменены с помощью функции update_option() и удалены с помощью функции unregister_setting().

Связанные элементы

  • Функция add_settings_section(): регистрирует новую секцию на странице настроек.
  • Функция add_settings_field(): регистрирует новое поле на странице настроек.
  • Функция do_settings_sections(): выводит все зарегистрированные секции на странице настроек.
  • Функция do_settings_fields(): выводит все зарегистрированные поля на странице настроек.
  • Функция get_settings_errors(): возвращает массив с ошибками, связанными с настройками.
  • Функция settings_fields(): выводит скрытые поля формы настроек для защиты от подделки.
  • Функция settings_errors(): выводит ошибки, связанные с настройками.
  • Хук admin_init: вызывается при инициализации административной части сайта.
  • Хук admin_menu: вызывается при создании меню административной части сайта.
  • Хук admin_enqueue_scripts: вызывается при подключении скриптов и стилей в административной части сайта.
Обсуждение