В чем разница между параметрами и настройками?


14

И какой я должен использовать?

В чем разница между Options API и параметры настройки по API ?

У меня есть тема с более чем 100 опциями администратора, как мне зарегистрировать и сохранить их? В данный момент я использую Options API, но меня это не устраивает, каждая опция регистрируется отдельно, поэтому они создают много запросов к базе данных.

Я вижу три способа хранения параметров / настроек WordPress на данный момент:

1. Параметры API - старый (худший?) Способ.

(Я уже использую этот)

<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>        

// all the inputs

<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="option1,option2,option3,..." />
<p class="submit">
<input type="submit" value="<?php _e('Save Changes') ?>" />
</p>
</form>

И тогда в переднем конце:

echo get_option('option1'); 

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

2. Параметры API - 1 вариант в виде большого массива.

Я не уверен здесь, как обновить этот массив, используя HTML-формы, кто-нибудь? Я считаю, что это должно идти так:

$opt['option1'] = foo
$opt['option2'] = foo
$opt['option3'] = bar

update_option('theme_settings',$opt);

И тогда в переднем конце:

$settings = get_option('theme_settings');
echo $settings['option1']; 
echo $settings['option2']; 
echo $settings['option3']; 

Я слышал, что это действительно уменьшает количество запросов, и у меня есть все как один вариант. Я хотел бы использовать это, но, как я уже упоминал выше, я не уверен, как обновить этот массив параметров в форме администратора Wordpress. Я думаю: <input type="hidden" name="theme_settings" value="option1,option2,option3,..." />перезапишет массив вместо добавления новых элементов?

3. Настройки API - новый способ.

Требуется много дополнительного кода:

function register_theme_settings() {
    //register our settings   
    register_setting( 'theme-settings', 'option1' );     
    register_setting( 'theme-settings', 'option2' );     
    register_setting( 'theme-settings', 'option3' );     
    register_setting( 'theme-settings', 'option4' );     
    register_setting( 'theme-settings', 'option5' );     
    // imagine this for 100 and more options    
};

И я не уверен, в чем разница между этим и методом с одним параметром в качестве массива?

tl; dr Итак, как мне спроектировать хранилище настроек моей темы, чтобы оно работало быстро и хранить все параметры / настройки в одном месте, чтобы я мог, например, отобразить / вывести их все с помощью одной простой функции (да Я хочу сделать это сильно, но я не знаю, как это сделать с помощью этого API настроек). Второй способ пока выглядит лучше всего.

Ответы:


11

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

API настроек - это интерфейс API. Он позволяет вам создавать экраны настроек таким образом, чтобы они адаптировались к будущим изменениям интерфейса WordPress, а также автоматически и легко обрабатывали безопасность (одноразовые и белые списки, а также валидацию и т. Д.), Чем сворачивание собственного кода.

Подробнее об API настроек: http://ottopress.com/2009/wordpress-settings-api-tutorial/


3
+1. API настроек - это правильный подход, и он будет обрабатывать ваши 100 вариантов тем, не задумываясь. Некоторые дураки написали действительно скучное руководство по включению API настроек в темы WordPress .
Чип Беннетт

Отто, @Chip Bennett спасибо, ребята. У меня есть еще один дополнительный вопрос - согласно документации я должен создать несколько групп настроек для каждой страницы администратора, как-то это повлияет на производительность / количество запросов? Есть ли что-то неправильное в хранении всех параметров в одной группе (скажем, «настройки темы»), как я объяснил в моем слишком длинном, чтобы читать вопрос? :)
Wordpressor

2
Я бы рекомендовал использовать только одну группу опций. Если вам нужна организация пользовательского интерфейса, используйте разделы настроек или вкладки страницы настроек.
Чип Беннетт

@Chip Bennett, хорошо, большое спасибо :) Отличный урок, кстати.
Wordpressor

@ChipBennett Ссылка: включение настроек API в WordPress Themes в вашем комментарии не работает.
Виджей Чавда
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.