La API de configuración de WordPress, Parte 2 Secciones, campos y configuración

Cuando se trata de desarrollar Temas y Complementos de WordPress, hay varias formas diferentes en que los desarrolladores están creando sus menús, opciones y funcionalidad de validación. La cuestión es que, en realidad, solo hay una forma de hacerlo correctamente dentro de WordPress: la API de configuración.

Esta serie pretende ser la guía definitiva sobre cómo aprovechar las ventajas de la API de configuración de WordPress para que tenga un único punto de referencia para desarrollar adecuadamente sus temas y complementos..

En el primer artículo de esta serie analizamos la API de configuración y por qué es importante. Aquí, comenzaremos a sumergirnos en la API y cómo aprovechar todo lo que ofrece..

Examinaremos las unidades fundamentales de las opciones de WordPress (secciones, campos y configuraciones) y cómo incluirlas en el Panel de WordPress nativo..


En secciones, campos y configuraciones

Antes de escribir cualquier código, es importante comprender los tres componentes principales de la API de configuración de WordPress.

  1. Campos Son opciones individuales que aparecen en las páginas del menú. Los campos corresponden a elementos reales en la pantalla. Es decir, un campo se administra mediante un cuadro de texto, un botón de opción, una casilla de verificación, etc. Los campos representan un valor almacenado en la base de datos de WordPress.
  2. Secciones Son una agrupación lógica de campos. Cuando trabaje con varios campos, es probable que se agrupen las opciones relacionadas: las Secciones representan esta agrupación. Además, si su trabajo incluye varias páginas de administración, cada sección a menudo corresponde a su propia página de menú (aunque también puede agregarlas a las secciones existentes).
  3. Ajustes se registran después de haber definido tanto los campos como las secciones. Piense en los ajustes como una combinación del campo y la sección a la que pertenece.

En este punto, no se preocupe si aún no está seguro de alguno de los componentes principales. Vamos a analizar en profundidad cada componente junto con el código fuente de ejemplo que lo une todo.


Una caja de arena para nuestra configuración

Para comenzar a programar con la API de configuración, configuremos un tema básico que se pueda usar a lo largo de este artículo y el resto de la serie. Todo el código fuente está disponible en GitHub, también.

En su instalación local de WordPress, vaya al directorio "temas" y cree un nuevo directorio vacío y llámelo "WordPress-Settings-Sandbox". Agregue los siguientes tres archivos:

  • style.css - Esta es la hoja de estilo para el tema. Incluye toda la información meta del tema. Es requerido por WordPress
  • index.php - Esta es la plantilla por defecto para el tema. Puede estar vacío al principio. Es requerido por WordPress
  • funciones.php - Aquí es donde haremos la mayor parte de nuestro trabajo. Lo completaremos a lo largo del tutorial.

Agregue el siguiente código a style.css:

/ * Nombre del tema: Configuración de WordPress Zona de prueba URI URI: SU URI Descripción: Un tema simple utilizado para mostrar la API de configuración de WordPress. Autor: SU NOMBRE Autor URI: SU SITIO WEB Versión: 0.1 Licencia: Copyright 2012 SU NOMBRE (SU DIRECCIÓN DE CORREO ELECTRÓNICO) Este programa es software libre; puede redistribuirlo y / o modificarlo según los términos de la Licencia Pública General de GNU, versión 2, tal como lo publica Free Software Foundation. Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; sin ni siquiera la garantía implícita de COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO PARTICULAR. Vea la Licencia Pública General de GNU para más detalles. Debería haber recibido una copia de la Licencia Pública General de GNU junto con este programa; si no, escriba a la Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 EE. UU. * /

A continuación, agregue el siguiente código a index.php:

   La guía completa de la API de configuración | Tema de la caja de arena   

Encabezado de Sandbox

Este es el contenido del tema..

© Todos los derechos reservados.

Tenga en cuenta que el marcado anterior es extraordinariamente simple y lo hago no Recomiendo usar esto como una base para el desarrollo del tema. Está diseñado para esta serie de artículos y simplemente proporciona los medios por los cuales leeremos los valores de la API de configuración..

En el Temas En la pantalla de administración, actualice la página y debería ver aparecer el nuevo tema de Sandbox. Adelante, actívalo..

En este punto, estamos listos para empezar.


Nuestro primer conjunto de opciones

Observe que en la plantilla de índice anterior, hemos definido tres regiones de contenido específicas: encabezado, contenido y pie de página. Usando la API de configuración, creemos una sección "General" que contiene tres campos, cada uno de los cuales corresponde a una de las regiones de contenido específicas que acabamos de definir.

Antes de escribir cualquier código, siempre me resulta útil enumerar exactamente lo que debo hacer. En este caso, tenemos que hacer lo siguiente:

  • Defina una sección que se utilizará para agrupar cada campo.
  • Agregue tres campos, uno para cada región de contenido, a la sección definida anteriormente
  • Registrar la configuración con la API de WordPress.

Para evitar bloques de código masivos y para asegurarnos de que cubrimos todas nuestras bases, tomaremos cada uno de los puntos anteriores punto por punto.

Creando la Sección

Para encontrar nuestra sección de opciones "General", necesitaremos usar la función add_settings_section de la API de configuración. Según el códice de WordPress, add_settings_section requiere tres argumentos:

  • CARNÉ DE IDENTIDAD - Este es el identificador único para esta sección en particular. Tenga en cuenta que este es el valor que se utilizará para registrar cada campo dentro de esta sección. Siéntete libre de nombrarlo como quieras, pero te recomiendo que lo dejes claro para facilitar la lectura..
  • Título - Este valor se mostrará en la parte superior de la página en el Panel de WordPress cuando los usuarios estén trabajando con sus opciones.
  • Llamar de vuelta - Este es el nombre de una función que definiremos que representará el texto en la pantalla de la función. Puede ser utilizado para una variedad de funcionalidades. En el caso más simple, puede usarse para proporcionar un conjunto de instrucciones o descripción para su página de opciones.
  • Página - Este valor se utiliza para indicar a WordPress en qué página deben mostrarse sus opciones. En un artículo futuro, usaremos esto para agregar opciones a nuestras propias páginas personalizadas. Por ahora, estaremos agregando esto a la existente. Opciones generales página.

Con eso, sigamos adelante y definamos nuestra sección. Eche un vistazo al siguiente código comentado. Estamos agregando esto a nuestro archivo functions.php.

Una palabra sobre los fragmentos de código de esta serie: no solo copie y pegue este código. Tómese el tiempo para leer cada línea, vea cómo se corresponden los argumentos con cada función de API que cubrimos y siga los comentarios correspondientes para asegurarse de entender lo que estamos haciendo:

Seleccione las áreas de contenido que desea mostrar.

'; // finalizar sandbox_general_options_callback?>

¿Tener sentido? En general, no parece mucho, pero navega hasta tu Ajustes menú y haga clic en General. Desplácese hasta el final de la página y verá su nueva sección de opciones.

Puede agregar esta sección a cualquiera de las páginas bajo el Ajustes menú. En el ejemplo anterior, hemos pasado "general" como último parámetro a add_settings_section, pero si desea agregarlo a una página diferente, puede proporcionar un título de página diferente. Aquí hay una referencia para cada uno de los Ajustes Páginas y su correspondiente clave:

  • General General"
  • Escribir, "escribir"
  • Lectura, "leyendo"
  • Discusión, "discusión"
  • Medios, "medios"
  • Privacidad, "privacidad"
  • Enlaces permanentes, "enlace permanente"

Añadiendo campos

Ahora que tenemos una sección definida, podemos introducir algunas opciones. Recuerde que en nuestra plantilla de índice definimos tres elementos contenedores específicos: encabezado, contenido y pie de página.

A pesar de que presentaremos más opciones a lo largo de esta serie, hoy presentaremos una manera de alternar la visibilidad de cada uno de los elementos anteriores..

Al igual que hicimos con la sección de configuración, me gusta enumerar exactamente lo que debemos hacer antes de escribir cualquier código. Ya que vamos a estar alternando cada una de las áreas de contenido ...

  • Vamos a necesitar tres opciones, una para cada área de contenido
  • Como estamos cambiando la visibilidad, podemos usar una casilla de verificación como nuestro elemento de interfaz

En este punto, estamos listos para introducir el primer campo de configuración. Para hacer esto, usaremos la función add_settings_field. Esta función toma seis parámetros (cuatro requeridos, dos opcionales). Son los siguientes:

  • CARNÉ DE IDENTIDAD - El ID del campo real. Esto se utilizará para guardar y recuperar el valor en todo el tema. Recomiendo nombrar esto como algo significativo para mejorar la legibilidad de su código.
  • Título - Este valor aplica un título a la opción de campo en la página de administración. Esto debería quedar claro ya que será leído por los usuarios finales..
  • Llamar de vuelta - Este es el nombre de la función que se usa para representar el elemento de interfaz real con el que los usuarios interactuarán.
  • Página - Similar a la sección que describimos, este parámetro identifica en qué página debe residir esta opción. Si solo está introduciendo una sola opción, puede agregarla a una página existente en lugar de a una sección que haya definido..
  • Sección - Esto se refiere a la sección que ha creado utilizando la función add_settings_section. Este valor es el ID que especificó al crear su sección. Este es un parámetro opcional..
  • Argumentos - Esta es una matriz de argumentos que se pasan a la función de devolución de llamada. Esto es útil si hay información adicional que desea incluir al representar su elemento de opción. Este es un parámetro opcional..

Dicho esto, avancemos y definamos nuestro primer campo de configuración. Específicamente, presentaremos una opción para alternar la visibilidad del encabezado.

Primero, hacemos una llamada a add_settings_field justo debajo de la función add_settings_section llamada en la función de inicialización que escribimos en la primera parte del tutorial. Revise cada línea y los comentarios para cada opción:

// A continuación, introduciremos los campos para alternar la visibilidad de los elementos de contenido. add_settings_field ('show_header', // ID utilizada para identificar el campo en todo el tema 'Header', // La etiqueta a la izquierda del elemento de la interfaz de opción 'sandbox_toggle_header_callback', // El nombre de la función responsable de representar la interfaz de la opción 'general', // La página en la que se mostrará esta opción 'general_settings_section', // El nombre de la sección a la que pertenece este campo array (// La matriz de argumentos para pasar a la devolución de llamada. En este caso, solo una descripción. 'Active esta configuración para mostrar el encabezado.'));

A continuación, definimos la devolución de llamada referida en la función anterior. Esta devolución de llamada se utiliza para representar la casilla de verificación y la descripción en la página de administración:

/ ** * Esta función representa los elementos de la interfaz para alternar la visibilidad del elemento del encabezado. * * Acepta una matriz de argumentos y espera que el primer elemento de la matriz sea la descripción * que se muestra al lado de la casilla de verificación. * / function sandbox_toggle_header_callback ($ args) // Tenga en cuenta que el ID y el atributo de nombre del elemento deben coincidir con el del ID en la llamada a add_settings_field $ html = ''; // Aquí, tomaremos el primer argumento de la matriz y lo agregaremos a una etiqueta junto a la casilla de verificación $ html. = ''; echo $ html;  // end sandbox_toggle_header_callback

En lo que respecta a la casilla de verificación, preste atención a los comentarios, pero no se preocupe demasiado por algunos de los atributos que no reconoce (como una llamada a la función de marcada ()). Más adelante en esta serie, veremos cada elemento de entrada y sus funciones auxiliares correspondientes..

Por ahora, su archivo functions.php debería verse así:

Seleccione las áreas de contenido que desea mostrar.

'; // End sandbox_general_options_callback / * ------------------------------------------- ----------------------------- * * Field Callbacks * ---------------- -------------------------------------------------- ------ * / / ** * Esta función representa los elementos de la interfaz para alternar la visibilidad del elemento del encabezado. * * Acepta una matriz de argumentos y espera que el primer elemento de la matriz sea la descripción * que se muestra al lado de la casilla de verificación. * / function sandbox_toggle_header_callback ($ args) // Tenga en cuenta que el ID y el atributo de nombre del elemento coinciden con el del ID en la llamada a add_settings_field $ html = ''; // Aquí, tomaremos el primer argumento de la matriz y lo agregaremos a una etiqueta junto a la casilla de verificación $ html. = ''; echo $ html; // finalizar sandbox_toggle_header_callback?>

En este punto, actualice el Configuración general página. Debería ver su casilla de verificación con la etiqueta "Encabezado" y una descripción junto a la casilla de verificación.

Desafortunadamente, aún no está guardando el valor en la base de datos.

Registro de nuestras configuraciones

Para que nuestros campos se guarden realmente en la base de datos, debemos registrarlos con WordPress. Hacer esto es relativamente fácil: solo tenemos que aprovechar la función register_setting.

Esta función acepta tres argumentos (dos requeridos, uno opcional):

  • Grupo de opciones - Este es en realidad el nombre del grupo de opciones. Esto puede ser un grupo existente de opciones proporcionadas por WordPress o una identificación que especificamos al crear nuestra propia sección de configuración. Este argumento es requerido.
  • Nombre de la opción - Este es el ID del campo que estamos registrando. En nuestro caso, solo estamos registrando un solo campo, pero si estuviéramos registrando múltiples campos, entonces deberíamos llamar a esta función para cada campo que estamos registrando. Veremos más sobre esto en un momento. Este argumento es requerido.
  • Llamar de vuelta - Este argumento requiere el nombre de una función que se llamará antes de guardar los datos en la base de datos. Este argumento está fuera del alcance de este artículo, pero lo visitaremos antes de que finalice la serie. Este argumento es opcional.

En este punto, registremos la configuración que acabamos de crear. Echa un vistazo al código de abajo. Agregue esta línea de código directamente debajo de la llamada a add_settings_field en la función de inicialización que definimos anteriormente en el artículo. Podría decirse que es el más fácil de seguir de todos los fragmentos de este artículo:

// Finalmente, registramos los campos con WordPress register_setting ('general', 'show_header');

Pruébelo: marque la casilla de verificación, haga clic en "Guardar cambios" y observe que cuando se actualiza la página, la opción ha cambiado. Desmarque la casilla de verificación, guarde y vea cómo se guarda..

Bastante fácil, cierto?

Añadiendo las dos últimas opciones

Todavía tenemos que introducir las opciones para alternar la visibilidad del área de contenido y el área del pie de página. Es casi exactamente lo mismo que cómo configuramos la opción para alternar el encabezado.

Primero, definamos el campo para mostrar el área de contenido. Esto irá bajo la primera llamada a add_settings_field:

add_settings_field ('show_content', 'Content', 'sandbox_toggle_content_callback', 'general', 'general_settings_section', array ('Activar esta configuración para mostrar el contenido.'));

Y vamos a configurar la función de devolución de llamada:

function sandbox_toggle_content_callback ($ args) $ html = ''; $ html. = ''; echo $ html;  // end sandbox_toggle_content_callback

A continuación, definamos el campo para mostrar el área del pie de página:

add_settings_field ('show_footer', 'Footer', 'sandbox_toggle_footer_callback', 'general', 'general_settings_section', array ('Activar esta configuración para mostrar el pie de página.'));

Y configura la devolución de llamada para este campo, también:

función sandbox_toggle_footer_callback ($ args) $ html = ''; $ html. = ''; echo $ html;  // end sandbox_toggle_footer_callback

Finalmente, registremos estos dos nuevos campos con WordPress. Estas dos llamadas de función van al final de la función de inicialización que definimos anteriormente en el artículo.

register_setting ('general', 'show_content'); register_setting ('general', 'show_footer');

La versión final de functions.php debería verse así:

Seleccione las áreas de contenido que desea mostrar.

'; // End sandbox_general_options_callback / * ------------------------------------------- ----------------------------- * * Field Callbacks * ---------------- -------------------------------------------------- ------ * / / ** * Esta función representa los elementos de la interfaz para alternar la visibilidad del elemento del encabezado. * * Acepta una matriz de argumentos y espera que el primer elemento de la matriz sea la descripción * que se muestra al lado de la casilla de verificación. * / function sandbox_toggle_header_callback ($ args) // Tenga en cuenta que el ID y el atributo de nombre del elemento coinciden con el del ID en la llamada a add_settings_field $ html = ''; // Aquí, tomaremos el primer argumento de la matriz y lo agregaremos a una etiqueta junto a la casilla de verificación $ html. = ''; echo $ html; // finalizar la función sandbox_toggle_header_callback sandbox_toggle_content_callback ($ args) $ html = ''; $ html. = ''; echo $ html; // finalizar la función sandbox_toggle_content_callback sandbox_toggle_footer_callback ($ args) $ html = ''; $ html. = ''; echo $ html; // finalizar sandbox_toggle_footer_callback?>

Ahora actualice el Configuración general Página y aviso que tiene las tres casillas de verificación completamente funcionales.


Leyendo la API

¿De qué sirven las opciones si no podemos aprovecharlas en nuestro tema o en nuestro complemento? Necesitamos poder leer los valores para poder administrar adecuadamente nuestras nuevas opciones.

Para hacer esto, necesitamos usar la función get_option. Esta función acepta dos argumentos (uno requerido, uno opcional):

  • ID de opción - Este argumento es el ID del campo para el valor que está intentando recuperar. Este argumento es requerido.
  • Opción por defecto - Este es el valor que devolverá la función si la función devuelve un valor vacío (como en el caso de que la opción no se encuentre en la base de datos). Este argumento es opcional.

Primero, intentemos cambiar la visibilidad del encabezado. En la plantilla de índice que creamos anteriormente en este artículo, ubique el elemento con el ID del encabezado. Debe tener un aspecto como este:

Encabezado de Sandbox

A continuación, hagamos una llamada a get_option en el contexto de un condicional. Si el condicional se evalúa como verdadero (es decir, la opción se ha marcado en la Configuración general página), entonces se mostrará el elemento; de lo contrario, el elemento no se mostrará.

 

Encabezado de Sandbox

Después de eso, espero a la Configuración general página, marque la opción para ocultar el elemento del encabezado y actualice su página de inicio. El elemento de encabezado ya no debería aparecer.

En este punto, es simplemente una cuestión de repetir el proceso para el elemento de contenido y pie de página, también. Necesitamos envolver el contenido y los elementos del pie de página con condicionales que evalúen el resultado de las llamadas get_option.

Echar un vistazo:

 

Este es el contenido del tema..

© Todos los derechos reservados.

Revisar la Configuración general página, active cada casilla de verificación y actualice la página del tema. Tus elementos deben alternar cada uno independientemente del otro..


Siguiente, Páginas de Menú

¡Eso es todo por ahora! Hemos examinado todas las funciones necesarias para introducir nuevas secciones, campos y configuraciones en WordPress. Por supuesto, hay mucho más que cubrir..

En el siguiente artículo, veremos cómo agregar elementos de menú personalizados al menú de WordPress y cómo podemos introducir nuestras propias páginas en el Panel de WordPress..


Recursos Relacionados

Cubrimos mucho material en este articulo. Aquí hay una referencia para todo lo que usamos en este artículo..

  • Introducción a la API de configuración
  • add_settings_section
  • add_settings_field
  • register_setting
  • get_option
  • Ejemplo de trabajo en GitHub