Entonces, ¿todavía necesito enganchar admin_init
y llamar a esos register_setting()
si hice add_option()
antes?
Sí. Usted necesita.
Puede agregar add_option
para establecer el valor predeterminado.
Otra llamada a add_option
no hará nada.
Sin embargo, la idea de register_setting()
es más que solo add_option()
.
Cada configuración tiene la página de contexto como (general, lectura, escritura, medios, alguna página que ha definido, ...) y puede tener la función de devolución de llamada donde puede realizar acciones en sus datos.
Para obtener más información, consulte la API de configuración .
Alguien puede pensar que la API de configuración es un gran lío. Por cierto, esto es lo que puedes leer desde el núcleo de WordPress.
File: wp-admin/includes/template.php
2: /**
3: * Template WordPress Administration API.
4: *
5: * A Big Mess. Also some neat functions that are nicely written.
(también hay una parte de la API de configuración en wp-includes / option.php )
En el otro lado, un ejemplo del códice puede ayudarlo a comenzar rápidamente.
Sin embargo, al trabajar con la configuración, debe profundizar y cubrir los posibles errores, por lo que debe comprender cómo funciona perfectamente.
Esto puede ser difícil para los programadores de WordPress que comienzan a escribir los primeros complementos. Puede tomar días.
En WordPress 4.7 teníamos actualizaciones de la API de configuración, pero esto no negocia el hecho de que la API de configuración podría subir de nivel en el futuro.
Si recuerdo, es difícil elegir los diferentes elementos HTML al crear secciones, por ejemplo:
File: wp-admin/includes/template.php
1286: function do_settings_sections( $page ) {
1287: global $wp_settings_sections, $wp_settings_fields;
1288:
1289: if ( ! isset( $wp_settings_sections[$page] ) )
1290: return;
1291:
1292: foreach ( (array) $wp_settings_sections[$page] as $section ) {
1293: if ( $section['title'] )
1294: echo "<h2>{$section['title']}</h2>\n";
1295:
1296: if ( $section['callback'] )
1297: call_user_func( $section['callback'], $section );
1298:
1299: if ( ! isset( $wp_settings_fields ) || !isset( $wp_settings_fields[$page] ) || !isset( $wp_settings_fields[$page][$section['id']] ) )
1300: continue;
1301: echo '<table class="form-table">';
1302: do_settings_fields( $page, $section['id'] );
1303: echo '</table>';
1304: }
1305: }
Como veo el problema con la API de configuración , esta API es antigua.
Cual puede ser la posible mejora.
Pseudo-lenguaje. Simplemente defina su formulario de esta forma a través de la API de configuración
---
name: cool-settings.php
style: default
---
textfield: First Name|first-name
textfield: Last Name|last-name
textarea: About Yourself|about
image: Your Image|image|(.gif|.jpg|.jpeg|.png)
Vi esta sintaxis de Jekyll.