add_settings_field()

Добавляет новое поле в раздел страницы настроек
Функция WordPress
INT 2.7.0
WordPress Icon

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

Функция add_settings_field() добавляет новое поле в секцию страницы настроек.

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

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

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

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

Функция add_settings_field() принимает следующие параметры:

  • $id (строка, обязательный): Уникальное имя поля. Используется в атрибуте id тегов.
  • $title (строка, обязательный): Заголовок поля. Отображается как метка для поля при выводе.
  • $callback (callable, обязательный): Функция, которая заполняет поле нужными элементами формы. Функция должна выводить свой результат с помощью echo.
  • $page (строка, обязательный): Имя страницы настроек, на которой нужно показать секцию (например, general, reading, writing и т. д.).
  • $section (строка, необязательный): Имя секции страницы настроек, в которой нужно показать поле. По умолчанию — ‘default’.
  • $args (массив, необязательный): Дополнительные аргументы, передаваемые в функцию обратного вызова.
    • label_for (строка): Если указано, заголовок поля будет обернут в элемент label, а его атрибут for будет заполнен этим значением.
    • class (строка): CSS-класс, который будет добавлен к элементу при выводе поля.
<?php
function my_custom_field_callback( $args ) {
    $option_name = $args['option_name'];
    $value = get_option( $option_name );
    ?>
    <input type="text" name="<?php echo esc_attr( $option_name ); ?>" value="<?php echo esc_attr( $value ); ?>" />
    <?php
}
function my_custom_settings_page() {
    add_settings_section( 'my_custom_section', 'My Custom Section', 'my_custom_section_callback', 'general' );
    add_settings_field( 'my_custom_field', 'My Custom Field', 'my_custom_field_callback', 'general', 'my_custom_section', array( 'option_name' => 'my_custom_option' ) );
    register_setting( 'general', 'my_custom_option' );
}
add_action( 'admin_init', 'my_custom_settings_page' );
?>

В этом примере мы создаем страницу настроек и добавляем секцию с полем. Функция my_custom_field_callback() является функцией обратного вызова, которая выводит поле ввода типа «text». Значение поля получается с помощью функции get_option() и выводится в атрибуте «value».

Затем мы добавляем секцию и поле с помощью функций add_settings_section() и add_settings_field(). Параметр 'my_custom_option' передается в функцию обратного вызова через массив $args.

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

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

Создание поля на странице настроек


function my_settings_field_callback() {
    // Код для заполнения поля формой
    echo '<input type="text" name="my_settings_field" value="' . esc_attr( get_option( 'my_settings_field' ) ) . '" />';
}
add_action( 'admin_init', 'my_settings_field_init' );
function my_settings_field_init() {
    add_settings_section(
        'my_settings_section',
        'My Settings Section',
        'my_settings_section_callback',
        'general'
    );
    add_settings_field(
        'my_settings_field',
        'My Settings Field',
        'my_settings_field_callback',
        'general',
        'my_settings_section'
    );
    register_setting( 'general', 'my_settings_field' );
}
function my_settings_section_callback() {
    // Код для отображения описания секции
    echo 'This is my settings section.';
}

Отображение поля на странице настроек


function my_settings_field_callback() {
    // Код для заполнения поля формой
    echo '<input type="text" name="my_settings_field" value="' . esc_attr( get_option( 'my_settings_field' ) ) . '" />';
}
add_action( 'admin_init', 'my_settings_field_init' );
function my_settings_field_init() {
    add_settings_section(
        'my_settings_section',
        'My Settings Section',
        'my_settings_section_callback',
        'general'
    );
    add_settings_field(
        'my_settings_field',
        'My Settings Field',
        'my_settings_field_callback',
        'general',
        'my_settings_section'
    );
    register_setting( 'general', 'my_settings_field' );
}
function my_settings_section_callback() {
    // Код для отображения описания секции
    echo 'This is my settings section.';
}

Настройка атрибутов поля


function my_settings_field_callback() {
    // Код для заполнения поля формой
    echo '<input type="text" name="my_settings_field" value="' . esc_attr( get_option( 'my_settings_field' ) ) . '" />';
}
add_action( 'admin_init', 'my_settings_field_init' );
function my_settings_field_init() {
    add_settings_section(
        'my_settings_section',
        'My Settings Section',
        'my_settings_section_callback',
        'general'
    );
    add_settings_field(
        'my_settings_field',
        'My Settings Field',
        'my_settings_field_callback',
        'general',
        'my_settings_section',
        array(
            'label_for' => 'my_settings_field',
            'class' => 'my-settings-field',
        )
    );
    register_setting( 'general', 'my_settings_field' );
}
function my_settings_section_callback() {
    // Код для отображения описания секции
    echo 'This is my settings section.';
}

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


function my_settings_field_callback() {
    // Код для заполнения поля формой
    echo '<input type="text" name="my_settings_field" value="' . esc_attr( get_option( 'my_settings_field' ) ) . '" />';
}
add_action( 'admin_init', 'my_settings_field_init' );
function my_settings_field_init() {
    add_settings_section(
        'my_settings_section',
        'My Settings Section',
        'my_settings_section_callback',
        'general'
    );
    add_settings_field(
        'my_settings_field',
        'My Settings Field',
        'my_settings_field_callback',
        'general',
        'my_settings_section',
        array(
            'label_for' => 'my_settings_field',
            'class' => 'my-settings-field',
        )
    );
    register_setting( 'general', 'my_settings_field' );
}
function my_settings_section_callback() {
    // Код для отображения описания секции
    echo 'This is my settings section.';
}

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

Как добавить новое поле на страницу настроек?

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

Пример использования функции add_settings_field():


add_settings_field( 'my_field', 'My Field', 'my_field_callback', 'my_settings_page', 'my_section' );

В данном примере мы добавляем новое поле с идентификатором ‘my_field’ и заголовком ‘My Field’ на страницу настроек с идентификатором ‘my_settings_page’ в раздел ‘my_section’.

Как задать уникальный идентификатор для поля?

Уникальный идентификатор для поля задается первым параметром функции add_settings_field(). Этот идентификатор используется в атрибуте ‘id’ тегов для идентификации поля.

Пример:


add_settings_field( 'my_field', 'My Field', 'my_field_callback', 'my_settings_page', 'my_section' );

В данном примере уникальный идентификатор для поля задан как ‘my_field’.

Как задать заголовок для поля?

Заголовок для поля задается вторым параметром функции add_settings_field(). Этот заголовок будет отображаться в качестве метки для поля при выводе.

Пример:


add_settings_field( 'my_field', 'My Field', 'my_field_callback', 'my_settings_page', 'my_section' );

В данном примере заголовок для поля задан как ‘My Field’.

Как задать функцию, которая заполняет поле формой?

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

Пример кода:


function my_callback_function() {
    // Вывод формы для заполнения поля
}
add_settings_field( 'my_field', 'My Field', 'my_callback_function', 'my_settings_page', 'my_section' );

На какой странице настроек показывать поле?

Для определения страницы настроек, на которой будет показано поле, используется параметр $page функции add_settings_field(). Этот параметр должен быть строкой, содержащей слаг-имя страницы настроек.

Пример кода:


add_settings_field( 'my_field', 'My Field', 'my_callback_function', 'my_settings_page', 'my_section' );

Как задать секцию страницы настроек, в которой показывать поле?

Для определения секции страницы настроек, в которой будет показано поле, используется параметр $section функции add_settings_field(). Этот параметр должен быть строкой, содержащей слаг-имя секции.

Пример кода:


add_settings_field( 'my_field', 'My Field', 'my_callback_function', 'my_settings_page', 'my_section' );

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

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

  • Функция register_setting(): Регистрирует новую настройку.
  • Функция add_settings_section(): Добавляет новую секцию на страницу настроек.
  • Функция settings_fields(): Выводит скрытые поля формы для настроек.
  • Хук admin_init: Вызывается при инициализации административной части сайта.
  • Хук admin_menu: Вызывается при создании меню административной панели.
  • Хук admin_enqueue_scripts: Вызывается при подключении скриптов и стилей на странице административной панели.
Обсуждение