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.