¿Y cuál debo usar?
¿Cuál es la diferencia entre la API de opciones y la API de ajustes ?
Tengo un tema con más de 100 opciones de administración, ¿cómo debo registrarlas y almacenarlas? En este momento estoy usando la API de Opciones, pero no estoy muy contento con ella, cada opción se está registrando por separado, por lo que crean muchas consultas en la base de datos.
Veo tres formas de almacenar las opciones / configuraciones de WordPress en este momento:
1. API de opciones: la antigua (¿la peor?).
(Ya estoy usando este)
<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>
Y luego en el frente:
echo get_option('option1');
Parece feo y no creo que sea la forma correcta de almacenar una gran cantidad de opciones (me encantaría agruparlas de alguna manera).
2. Opciones API - 1 opción como una gran matriz.
No estoy seguro de cómo actualizar esta matriz usando formularios html, ¿alguien? Creo que debería ir así:
$opt['option1'] = foo
$opt['option2'] = foo
$opt['option3'] = bar
update_option('theme_settings',$opt);
Y luego en frente:
$settings = get_option('theme_settings');
echo $settings['option1'];
echo $settings['option2'];
echo $settings['option3'];
He oído que realmente disminuye el número de consultas y las tengo todas como una opción. Me encantaría usar este, pero como mencioné anteriormente, no estoy seguro de cómo actualizar esta variedad de opciones dentro del formulario de administración de Wordpress. Supongo: <input type="hidden" name="theme_settings" value="option1,option2,option3,..." />
¿sobrescribirá la matriz en lugar de agregar nuevos elementos?
3. Configuración API: la nueva forma.
Requiere mucho código adicional:
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
};
Y no estoy seguro de cuál es la diferencia entre esto y el método con una opción como matriz.
tl; dr Entonces, ¿cómo debo proyectar el almacenamiento de configuraciones de mi tema para que funcione rápidamente y almacene todas las opciones / configuraciones en un solo lugar para poder, por ejemplo, hacer eco / volcarlas todas con una función simple (sí , Quiero hacerlo mal pero no tengo idea de cómo hacerlo con esta API de configuración). El segundo método se ve mejor hasta ahora.