И какой я должен использовать?
В чем разница между 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 настроек). Второй способ пока выглядит лучше всего.