E quale dovrei usare?
Qual è la differenza tra l' API delle opzioni e l' API delle impostazioni ?
Ho un tema con oltre 100 opzioni di amministrazione, come devo registrarle e memorizzarle? In questo momento sto usando l' API Opzioni ma non ne sono troppo contento, ogni singola opzione viene registrata separatamente, quindi creano molte query sul database.
Al momento vedo tre modi per memorizzare le opzioni / impostazioni di WordPress:
1. Opzioni API: il vecchio (il peggiore?) Modo.
(Sto già usando questo)
<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>
E poi nella parte frontale:
echo get_option('option1');
Sembra brutto e non penso che sia il modo giusto di memorizzare un gran numero di opzioni (mi piacerebbe raggrupparle in qualche modo).
2. Opzioni API - 1 opzione come un grande array.
Non sono sicuro qui come aggiornare questo array utilizzando i moduli HTML, chiunque? Credo che dovrebbe andare come:
$opt['option1'] = foo
$opt['option2'] = foo
$opt['option3'] = bar
update_option('theme_settings',$opt);
E poi nel front-end:
$settings = get_option('theme_settings');
echo $settings['option1'];
echo $settings['option2'];
echo $settings['option3'];
Ho sentito che diminuisce davvero il numero di query e le ho tutte come un'unica opzione. Mi piacerebbe usare questo, ma come ho detto sopra non sono sicuro di come aggiornare questo array di opzioni all'interno del modulo di amministrazione di Wordpress. Immagino: <input type="hidden" name="theme_settings" value="option1,option2,option3,..." />
sovrascriverà l'array invece di aggiungere nuovi elementi?
3. Impostazioni API - il nuovo modo.
Richiede molto codice aggiuntivo:
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
};
E non sono sicuro di quale sia la differenza tra questo e il metodo con un'opzione come array?
tl; dr Quindi, come dovrei proiettare la mia memoria delle impostazioni dei temi in modo che funzioni velocemente e memorizzi tutte le opzioni / impostazioni in un unico posto in modo da poter, ad esempio, riordinarle / scaricarle tutte con una semplice funzione (sì , Voglio farlo male ma non ho idea di come farlo con questa API delle impostazioni). Il secondo metodo sembra il migliore finora.