Яка різниця між параметрами та налаштуваннями?


14

І який я повинен використовувати?

У чому різниця між 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 налаштувань). Другий метод виглядає найкращим поки що.

Відповіді:


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, добре, спасибі велике :) Чудовий підручник btw.
Wordpressor

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