І який я повинен використовувати?
У чому різниця між Options API і параметри настройки по API ?
У мене є тема з більш ніж 100 параметрами адміністратора, як мені їх зареєструвати та зберігати? На даний момент я використовую API 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 налаштувань). Другий метод виглядає найкращим поки що.