Эта функция используется в комплексе с другими функциями API настроек, которые упрощают создание страницы настроек плагина.
Для этой функции уже должны быть известны параметры $page (страница плагина или админки) и $section (блок на странице, где поле будет выводиться).
Важно: каждая опция должна быть зарегистрирована функцией register_setting(), а эта функция отвечает только за добавление поля опции (HTML кода) на страницу в нужную секцию.
Функция обратного вызова (параметр $callback) должна выводить поля формы input и заполнять их существующими в базе данных данными.
Сохранение данных происходит автоматически.
Атрибут name тега input должен быть равен параметру $option_name в register_setting(), а id тега input равен параметру $id. Результат должен сразу выводиться на экран (echo). Значение атрибута value обычно заполняется функцией get_option().
Эта функция также может быть использована для добавления дополнительных полей опций в уже существующие страницы настроек WordPress, такие как: медиафайлы, чтение. Поля можно добавлять в уже существующие секции или создать свою секцию с помощью add_settings_section(), куда потом прикрепить поле опции.
Использование
add_settings_field( $id, $title, $callback, $page, $section, $args );
Примеры
#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) в самом конце мы получим новую полностью рабочую опцию.