settings_fields()

Выводит поля nonce, action и option_page для страницы настроек
Функция WordPress
INT 2.7.0
WordPress Icon

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

Функция settings_fields() используется для вывода полей nonce, action и option_page на странице настроек. Она обычно вызывается внутри тега формы на странице настроек, чтобы обеспечить безопасность и правильную обработку данных.

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

settings_fields( string $option_group )

В этом примере $option_group — это обязательный параметр, который указывает на имя группы настроек. Он должен совпадать с именем группы, указанной в функции register_setting().

  • $option_group (обязательный): Имя группы настроек. Должно соответствовать имени ключа разрешенной опции. По умолчанию разрешенные имена ключей опций включают ‘general’, ‘discussion’, ‘media’, ‘reading’, ‘writing’ и ‘options’.
<?php
// Выводим поле nonce, action и option_page на странице настроек
settings_fields( 'general' );
?>

В этом примере мы используем функцию settings_fields() для вывода полей nonce, action и option_page на странице настроек с группой настроек ‘general’.

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

Генерация полей настройки


function my_settings_page() {
    // Выводим форму настроек
    echo '<form method="post" action="options.php">';
    
    // Генерируем поля настроек
    settings_fields( 'my_settings_group' );
    
    // ...
    
    echo '</form>';
}

Функция settings_fields() используется для генерации полей настроек. Она выводит nonce, action и option_page поля для страницы настроек. В примере выше, функция settings_fields() вызывается с параметром 'my_settings_group', который должен соответствовать имени группы, указанной при регистрации настроек с помощью функции register_setting().

Создание формы настроек


function my_settings_page() {
    // Выводим форму настроек
    echo '<form method="post" action="options.php">';
    
    // Генерируем поля настроек
    settings_fields( 'my_settings_group' );
    
    // Выводим поля формы
    do_settings_sections( 'my_settings_page' );
    
    // ...
    
    echo '</form>';
}

После вызова функции settings_fields() можно использовать функцию do_settings_sections() для вывода полей формы. Функция do_settings_sections() принимает параметр 'my_settings_page', который должен соответствовать идентификатору страницы настроек, указанному при регистрации секций с помощью функции add_settings_section().

Проверка полей формы


function my_settings_page() {
    // Выводим форму настроек
    echo '<form method="post" action="options.php">';
    
    // Генерируем поля настроек
    settings_fields( 'my_settings_group' );
    
    // Выводим поля формы
    do_settings_sections( 'my_settings_page' );
    
    // Проверяем поля формы
    submit_button();
    
    // ...
    
    echo '</form>';
}

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

Сохранение настроек


function my_settings_page() {
    // Выводим форму настроек
    echo '<form method="post" action="options.php">';
    
    // Генерируем поля настроек
    settings_fields( 'my_settings_group' );
    
    // Выводим поля формы
    do_settings_sections( 'my_settings_page' );
    
    // Проверяем поля формы
    submit_button();
    
    // Сохраняем настройки
    register_setting( 'my_settings_group', 'my_option_name' );
    
    // ...
    
    echo '</form>';
}

Для сохранения настроек, необходимо зарегистрировать настройку с помощью функции register_setting(). В примере выше, настройка с именем 'my_option_name' будет сохраняться при отправке формы. Значение настройки будет доступно в базе данных и может быть получено с помощью функции get_option().

Отображение полей формы


function my_settings_page() {
    // Выводим форму настроек
    echo '<form method="post" action="options.php">';
    
    // Генерируем поля настроек
    settings_fields( 'my_settings_group' );
    
    // Выводим поля формы
    do_settings_sections( 'my_settings_page' );
    
    // Проверяем поля формы
    submit_button();
    
    // Сохраняем настройки
    register_setting( 'my_settings_group', 'my_option_name' );
    
    // Выводим значение поля формы
    $value = get_option( 'my_option_name' );
    echo '<input type="text" name="my_option_name" value="' . esc_attr( $value ) . '">';
    
    // ...
    
    echo '</form>';
}

После вызова функции do_settings_sections(), можно использовать функции, такие как get_option(), для получения значений полей формы. В примере выше, значение поля формы будет получено с помощью функции get_option() и выведено в поле ввода.

Использование нескольких групп настроек


function my_settings_page() {
    // Выводим форму настроек
    echo '<form method="post" action="options.php">';
    
    // Генерируем поля настроек для первой группы
    settings_fields( 'my_settings_group_1' );
    
    // Выводим поля формы для первой группы
    do_settings_sections( 'my_settings_page_1' );
    
    // Генерируем поля настроек для второй группы
    settings_fields( 'my_settings_group_2' );
    
    // Выводим поля формы для второй группы
    do_settings_sections( 'my_settings_page_2' );
    
    // ...
    
    echo '</form>';
}

Функция settings_fields() может быть вызвана несколько раз для разных групп настроек. В примере выше, сначала генерируются поля настроек для первой группы с идентификатором 'my_settings_group_1', а затем для второй группы с идентификатором 'my_settings_group_2'. Аналогично, функция do_settings_sections() вызывается дважды для вывода полей формы для каждой группы настроек.

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

Как связать функцию settings_fields() с функцией register_setting()?

Функция settings_fields() используется для вывода полей nonce, action и option_page на странице настроек.

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


// Регистрация настроек
function myplugin_register_settings() {
    register_setting( 'myplugin_options', 'myplugin_settings' );
}
add_action( 'admin_init', 'myplugin_register_settings' );
// Вывод полей на странице настроек
function myplugin_settings_page() {
    settings_fields( 'myplugin_options' );
    // Вывод остальных полей формы настроек
}

Какие значения должен принимать параметр $option_group в функции settings_fields()?

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


// Регистрация настроек
function myplugin_register_settings() {
    register_setting( 'myplugin_options', 'myplugin_settings' );
}
add_action( 'admin_init', 'myplugin_register_settings' );
// Вывод полей на странице настроек
function myplugin_settings_page() {
    settings_fields( 'myplugin_options' );
    // Вывод остальных полей формы настроек
}

Какие ключи опций по умолчанию могут использоваться в функции settings_fields()?

Функция settings_fields() может использовать следующие ключи опций по умолчанию: ‘general’, ‘discussion’, ‘media’, ‘reading’, ‘writing’ и ‘options’.


// Вывод полей на странице настроек
function myplugin_settings_page() {
    settings_fields( 'general' );
    // Вывод остальных полей формы настроек
}

Можно ли использовать функцию settings_fields() без функции register_setting()?

Нет, функция settings_fields() должна использоваться вместе с функцией register_setting().

Какие поля выводит функция settings_fields()?

Функция settings_fields() выводит поля nonce, action и option_page для страницы настроек.

Какие другие функции могут использоваться вместе с settings_fields() для создания страницы настроек?

Для создания страницы настроек вместе с функцией settings_fields() можно использовать функции add_settings_section() и add_settings_field().

Какие дополнительные настройки могут быть заданы для функции settings_fields()?

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

Функция settings_fields() используется для вывода полей nonce, action и option_page на странице настроек. Она должна использоваться вместе с функцией register_setting(). Для создания страницы настроек также могут использоваться функции add_settings_section() и add_settings_field(). Дополнительные настройки для функции settings_fields() не предусмотрены.

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

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