Intereting Posts
Пользовательское поле раскрывающегося списка добавлено в медиа-галерею; как его правильно сохранить? Как я могу использовать wp_get_image_editor для изменения размера изображения Изменить диапазон рейтинга в Link Manager отображать список сообщений / страниц в admin edit post / page Фильтровать сообщение, чтобы показывать только прямые дети категории плагин для отправки от администратора до flickr Как удалить определенные теги HTML из RSS-канала? Форма комментария двух шагов RegExp для исключения комментариев в формате HTML (FOR SOMME) Сляки, разделенные в ACF WordPress комментариев отправить кнопку замены / опции Как запросить последние 5 сообщений и отсортировать их по названию? Как получить все сообщения, связанные с таксономией? Как использовать категории, подкатегории и настраивать навигацию Получайте зарегистрированные пользовательские поля или отправляйте мета, даже если они пусты

Add_settings_field () параметрирование обратного вызова?

Я пытаюсь создать довольно большую и обширную страницу настроек с различными вариантами очень похожего типа.

Поскольку будет около 20 различных полей, а различия между большинством из них просто являются их идентификатором, я бы хотел избежать создания отдельного обратного вызова для каждого из них.

Можно ли сделать обратный вызов с переменной для идентификатора параметров каждого из этих полей? Таким образом, один обратный вызов может обслуживать различные поля настроек одного и того же типа.

Я попытался использовать параметр $ args для add_setitngs_feild (), но, к сожалению, он не работает. Например:

add_settings_field('name', 'Field Name', array($this, 'fieldCallback'), 'SettingsGrouP', 'SettingsSection', array("settingID!")); function fieldCallback($id) { echo "<input id='" . $id . "'/>";//etc, etc } 

fieldCallback si, но идентификатор ввода пуст.

Solutions Collecting From Web of "Add_settings_field () параметрирование обратного вызова?"

Последний необязательный $args вы можете передать в add_settings_fields() , передается для обратного вызова. Таким образом, кажется, что вы можете использовать один и тот же обратный вызов.

Надеюсь, я прав, потому что я просто наткнулся на эти две минуты назад из-за обсуждения в чате. 🙂

PS просматривал код, и это действительно относительно недавно, до того, как ~ 2.9 аргументы не были переданы.

В последнем (необязательном) аргументе $args в функции add_settings_field() вы можете использовать array('label_for' => 'something') поскольку он написан в документации (см. http://codex.wordpress.org/Function_Reference/add_settings_field ) ,

Поэтому, если вы хотите передать id своего поля, используйте для этого «label_for» 🙂

То, как WordPress передает аргументы функции обратного вызова, немного сложнее, функция обратного вызова получает весь массив $args качестве параметра, поэтому вы можете изменить функцию следующим образом:

 function fieldCallback(array $args) { echo "<input id='" . $args[0] . "'/>";//etc, etc } 

и вы оставите add_settings_field как есть.

 add_settings_field( 'name', 'Field Name', array($this, 'fieldCallback'), 'SettingsGrouP', 'SettingsSection', $args=array("settingID!") ); function fieldCallback($id) { `echo "<input id='" . $id[0] . "'/>";` } 

ИЛИ

что иллюстрирует Иакер Омри