¿Cuál es la diferencia entre opciones y configuraciones?

14

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

Wordpressor
fuente

Respuestas:

11

La API de opciones es principalmente una API de base de datos, que le permite obtener y almacenar valores en la tabla de opciones de la base de datos fácilmente.

La API de configuración es una API de interfaz. Le permite crear pantallas de configuración de una manera que se adaptará con los cambios futuros a la interfaz de WordPress, así como también manejar la seguridad (nonces y la lista blanca y la validación y demás) de forma automática y más fácil que rodar su propio código.

Más información sobre la API de configuración: http://ottopress.com/2009/wordpress-settings-api-tutorial/

Otón
fuente
3
+1. La API de configuración es el enfoque correcto y manejará sus 100 opciones de tema sin pestañear. Algunos tontos escribieron un tutorial realmente largo para incorporar la API de configuración en Temas de WordPress .
Chip Bennett
Otto, @Chip Bennett gracias chicos. Tengo una pregunta adicional más: de acuerdo con la documentación, debería crear varios grupos de configuración para cada página de administración, ¿afectará de alguna manera el rendimiento / número de consultas? ¿Hay algo malo en mantener todas las opciones dentro de un grupo (digamos 'configuración de tema') como expliqué en mi pregunta demasiado larga para leer? :)
Wordpressor
2
Recomendaría usar solo un grupo de opciones. Si necesita una organización de la interfaz de usuario, use las secciones de configuración o las pestañas de la página de configuración.
Chip Bennett
@Chip Bennett, está bien, muchas gracias :) Gran tutorial por cierto.
Wordpressor
@ChipBennett Link: la incorporación de la API de configuración en los temas de WordPress en su comentario no funciona.
Vijay Chavda