Jaka jest różnica między opcjami i ustawieniami?

14

I którego powinienem użyć?

Jaka jest różnica między interfejsem API opcji a interfejsem API ustawień ?

Mam motyw z ponad 100 opcjami administratora, jak je zarejestrować i przechowywać? W tej chwili używam interfejsu API opcji, ale nie jestem z niego zbyt zadowolony, każda opcja jest rejestrowana osobno, więc tworzą wiele zapytań do bazy danych.

Obecnie widzę trzy sposoby przechowywania opcji / ustawień WordPress:

1. API opcji - stary (najgorszy?) Sposób.

(Już tego używam)

<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>

A potem w interfejsie:

echo get_option('option1'); 

Wygląda brzydko i nie sądzę, że to właściwy sposób przechowywania dużej liczby opcji (chciałbym je jakoś pogrupować).

2. Opcje API - 1 opcja jako duża tablica.

Nie jestem pewien, jak zaktualizować tę tablicę za pomocą formularzy HTML, ktoś? Uważam, że powinno to wyglądać następująco:

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

update_option('theme_settings',$opt);

A potem z przodu:

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

Słyszałem, że naprawdę zmniejsza liczbę zapytań i mam je wszystkie jako jedną opcję. Chciałbym użyć tego, ale jak wspomniałem powyżej, nie jestem pewien, jak zaktualizować tę tablicę opcji w formularzu administratora Wordpress. Chyba: <input type="hidden" name="theme_settings" value="option1,option2,option3,..." />zastąpi tablicę zamiast dodawać nowe elementy?

3. Ustawienia API - nowy sposób.

Wymaga dużo dodatkowego kodu:

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    
};

I nie jestem pewien, jaka jest różnica między tym a metodą z jedną opcją jako tablicą?

tl; dr Tak, w jaki sposób powinienem zaprojektować pamięć ustawień motywów, aby działała szybko i zapisywała wszystkie opcje / ustawienia w jednym miejscu, dzięki czemu będę mogła na przykład wykonać echo / zrzucić je wszystkie za pomocą jednej prostej funkcji (tak , Chcę to zrobić źle, ale nie mam pojęcia, jak to zrobić za pomocą tego interfejsu API ustawień). Druga metoda wygląda jak dotąd najlepiej.

Wordpressor
źródło

Odpowiedzi:

11

Interfejs API opcji to przede wszystkim interfejs API bazy danych, umożliwiający łatwe pobieranie i przechowywanie wartości w tabeli opcji bazy danych.

Ustawienia API jest interfejsem API. Pozwala budować ekrany ustawień w sposób, który dostosuje się do przyszłych zmian w interfejsie WordPress, a także obsługiwać zabezpieczenia (nonces i biała lista i sprawdzanie poprawności itp.) Automatycznie i łatwiej niż tworzenie własnego kodu.

Więcej informacji na temat interfejsu API ustawień: http://ottopress.com/2009/wordpress-settings-api-tutorial/

Otto
źródło
3
+1. Interfejs API ustawień jest poprawnym podejściem i obsługuje 100 opcji motywu bez mrugnięcia okiem. Jakiś głupiec napisał bardzo obszerny samouczek dotyczący włączania interfejsu API ustawień do motywów WordPress .
Chip Bennett
Otto, @Chip Bennett, dziękuję wam. Mam jeszcze jedno dodatkowe pytanie - zgodnie z dokumentacją powinienem utworzyć wiele grup ustawień dla każdej strony administratora, czy wpłynie to w jakiś sposób na wydajność / liczbę zapytań? Czy jest coś złego w utrzymywaniu wszystkich opcji w ramach jednej grupy (powiedzmy „ustawienia motywu”), jak wyjaśniłem zbyt długo, aby przeczytać pytanie? :)
Wordpressor
2
Poleciłbym użycie tylko jednej grupy opcji. Jeśli potrzebujesz organizacji interfejsu użytkownika, skorzystaj z sekcji ustawień i / lub kart stron ustawień.
Chip Bennett
@Chip Bennett, w porządku, wielkie dzięki :) Świetny tutorial btw.
Wordpressor
@ChipBennett Link: włączenie interfejsu API ustawień do motywów WordPress w komentarzu jest zepsute.
Vijay Chavda,