правильно используйте поле "Добавить настройки"?


Я использую add_settings_field, чтобы добавить дополнительные сведения в меню настроек, но не уверен, как сохранить настройки или вызвать их обратно в своей теме.

Вот код на данный момент

add_action('admin_init','vimeo_setup');

function vimeo_setup(){
add_settings_field('vimeo_id','Vimeo ID','display_vimeo','general');
}

function display_vimeo(){

 echo '<input  type="text" name="vimeo_id" id="vimeo_id" value="" size="30" style="width:85%" />';
 echo '<p><small> Enter your Vimeo ID here.</small></p>';
}
 3
Author: Mild Fuzz, 2010-09-09

2 answers

Документация для add_settings_field() Гласит следующее:

Вы ДОЛЖНЫ зарегистрировать любые параметры, используемые этой функцией, с помощью register_setting(), иначе они не будут сохранены и обновлены автоматически.

 4
Author: Rarst, 2010-09-12 12:57:57

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

Таким образом, это должно использоваться вместе с вашим собственным зарегистрированным разделом или, в качестве альтернативы, быть полем для добавления в существующий раздел (например, на страницах опций).

См. http://codex.wordpress.org/Function_Reference/add_settings_section

Я бы зашел так далеко, что сказал, что они не очень хороши, когда дело доходит до создания плагина страницы опций или аналогичные (параметры темы), просто потому, что каждый зарегистрированный раздел и поле должны быть снабжены обратным вызовом (представьте, сколько обратных вызовов вам понадобится, если у вас есть 3-4 раздела с 5-6 полями). Конечно, вы можете выполнять динамические обратные вызовы (поэтому вам нужен только один обратный вызов для раздела и один для полей), передавая параметры... (вам также нужно будет убедиться, что вы напечатали номера для этих разделов/полей)..

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

// 1: Reference, 2: Option name, 3: Callback function to sanitize the data
register_setting( 'reference_name', 'option_name', 'example_callback' );

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

settings_fields( 'reference_name' ); 

Если вы зарегистрировали различные разделы и поля, вам также придется сделать это для каждого из зарегистрированных разделов.

do_settings_sections('your_section');

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

 3
Author: t31os, 2010-11-08 16:24:38