add_settings_field()
Создает поле опции для указанной секции (указанного блока настроек).
Эта функция используется в комплексе с другими функциями API настроек, которые упрощают создание страницы настроек плагина.
Для этой функции уже должны быть известны параметры:
$page- страница плагина или админки.$section- блок на странице, где поле будет выводиться.
Важно: каждая опция должна быть зарегистрирована функцией register_setting(), а эта функция отвечает только за добавление поля опции (HTML кода) на страницу в нужную секцию.
$callback - параметр - функция обратного вызова. Должна выводить на экран HTML код input поля и заполнять их существующими в базе данных данными.
Атрибут name тега <input> должен быть равен параметру $option_name в register_setting(), а id тега <input> равен параметру $id. Результат должен сразу выводиться на экран (echo). Значение атрибута value обычно заполняется функцией get_option().
Сохранение данных происходит автоматически.
Эта функция также может быть использована для добавления дополнительных полей опций в уже существующие страницы настроек WordPress, такие как: медиафайлы, чтение.
Поля можно добавлять в уже существующие секции или можно создать новую секцию с помощью add_settings_section(), в которую потом добавить поля.
Хуков нет.
Возвращает
null. Ничего не возвращает.
Использование
add_settings_field( $id, $title, $callback, $page, $section, $args );
- $id(строка) (обязательный)
- Ярлык (slug) опции, используется как идентификатор поля. Используется в ID атрибуте тега.
- $title(строка) (обязательный)
- Название поля.
- $callback(строка|callable) (обязательный)
Название функции обратного вызова. Функция должна заполнять поле нужным
<input>тегом, который станет частью одной большой формы.- Атрибут
nameдолжен быть равен параметру $option_name из register_setting(). - Атрибут
idобычно равен параметру $id. - Результат должен сразу выводиться на экран (echo).
- Атрибут
- $page(строка) (обязательный)
- Страница меню в которую будет добавлено поле. Указывать нужно ярлык (slug) страницы.
Должен быть равен параметру $menu_slug из add_theme_page(). У базовых страниц WordPress названия равны: general, reading, writing и т.д. по аналогии...
Или должен быть равен параметру $page из do_settings_sections( $page ); - $section(строка)
- Название секции настроек, в которую будет добавлено поле. По умолчанию default или может быть секцией добавленной функцией add_settings_section().
По умолчанию: default - $args(массив/смешанный)
Дополнительные параметры, которые нужно передать callback функции. Например, в паре key/value мы можем передать параметр $id, который затем использовать для атрибута id поля input, чтобы по нажатию на label в итоговом выводе, фокус курсора попадал в наше поле.
Специальные значения:
label_for- Строка. Если указать, то заголовок настройки будет обернут тегом <label for="ЗНАЧЕНИЕ ПОЛЯ">class- Строка. CSS класс который нужно добавить к тегу <tr> в котором выводиться поле опции.
По умолчанию: array()
Примеры
#1 Добавим новое поле опции на главную страницу настроек WordPress (general).
myprefix должен быть уникален, например каким-то префиксом вашего плагина или темы. Также, передадим последний параметр, где укажем id и название опции для атрибутов тега: id и name:
function add_option_field_to_general_admin_page(){
$option_name = 'my_option';
// регистрируем опцию
register_setting( 'general', $option_name );
// добавляем поле
add_settings_field(
'myprefix_setting-id',
'Название опции',
'myprefix_setting_callback_function',
'general',
'default',
array(
'id' => 'myprefix_setting-id',
'option_name' => 'my_option'
)
);
}
add_action('admin_menu', 'add_option_field_to_general_admin_page');
function myprefix_setting_callback_function( $val ){
$id = $val['id'];
$option_name = $val['option_name'];
?>
<input
type="text"
name="<? echo $option_name ?>"
id="<? echo $id ?>"
value="<? echo esc_attr( get_option($option_name) ) ?>"
/>
<?
}
В итоге на странице "Основное" (general) в самом конце мы получим новую полностью рабочую опцию:
Заметки
- Global. Массив.
$wp_settings_fieldsStorage array of settings fields and info about their pages/sections.
Список изменений
| С версии 2.7.0 | Введена. |
| С версии 4.2.0 | The $class argument was added. |