register_setting () vs add_option ()

4

Estoy creando mi primer plugin de WordPress. Agregué una función personalizada en el gancho de activación del complemento donde creo nuevas filas en la tabla wp_options usando la función add_option() . Ahora, quiero crear una página de API de configuración personalizada y noté que la gente usa la función register_setting() , luego renderiza esas funciones y etc., pero como sé, crea una fila dentro de la tabla wp_options . Entonces, ¿todavía necesito enganchar admin_init y llamar a esos register_setting() si hice add_option() antes?

    
pregunta Drzim Ti Miesto 10.01.2017 - 16:08

1 respuesta

1
  

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.

    
respondido por el prosti 10.01.2017 - 18:41

Lea otras preguntas en las etiquetas

___ función qstnhdr ___ is_category () ______ qstntxt ___

Tengo una categoría cuyo nombre es '51m series' (tiene id 135). ¿Por qué la expresión is_category (51) es verdadera en esta página de categoría? Creo que debería ser falso según Wordpress Codex . ¿Es un error? Wordpress 3.5.2

%code% code:

%pre%

51m series live Puede ver 1 ( %code% ) en la parte de la página.

    
______ answer117144 ___

Mi sospecha es que, por alguna razón, el %code% "51m series" o %code% %code% (o ambos son) coinciden con %code% .

La función %code% usa el PHP %code% condicional para que coincida con ID, slug y nombre:

%pre%

El %code% conditional parece estar regresando verdadero cuando se encuentra %code% en el nombre / slug %code% / %code% . Si bien los chequeos condicionales tanto del nombre como de la bala deben ser mayúsculas y minúsculas , ninguno de los cheques es estricto . Por lo tanto, es probable que el entero %code% se evalúe como una cadena contra %code% y que coincida con %code% (o contra %code% y que coincida con %code% )

Posibles soluciones:

  • Use nombres de categoría / babosas que no comiencen con números
  • Consulta explícitamente contra las babosas de categoría en lugar de contra las ID de categoría

Este también puede ser un caso en el que el núcleo debe realizar una comprobación %code% en %code% , para diferenciar entre un número entero de ID y una cadena de nombre / slug.

    
___ Categoría como clase para tipo de publicación personalizada