En este punto, hemos aprendido por qué la configuración de la API es importante, hemos aprendido todo acerca de las secciones, los campos y la configuración, e incluso hemos configurado un tema de Sandbox que estamos utilizando para desarrollar la funcionalidad a medida que exploramos la API..
En este artículo, veremos cómo podemos interactuar con el sistema de menú de WordPress. Es importante tener en cuenta que esto no es en realidad una parte de la API de configuración, pero está tan estrechamente relacionado que debemos familiarizarnos con cómo usarlo..
A medida que nuestros temas y / o complementos se vuelven más complejos, necesitamos conocer todas las formas en que podemos incluirlos en el Panel de WordPress. En este artículo, vamos a echar un vistazo a las diversas funciones del menú de WordPress, cuándo usarlas, cuándo evitarlas y las situaciones a las que cada función se presta mejor..
WordPress proporciona cuatro formas diferentes de incluir nuestros propios menús. A continuación, veremos cada menú, los parámetros que cada uno acepta y ejemplos de código para usarlos en los proyectos. Nuestro objetivo es desarrollar una comprensión clara de cómo funciona la API, ya que puede sentar las bases de nuestro trabajo futuro..
Las páginas del menú se refieren a los elementos del menú que ve cuando inicia sesión por primera vez en WordPress. Es decir, son las opciones disponibles en el menú de la izquierda que pueden contener una lista de páginas del submenú.
Para introducir su propia página de menú en el Panel de WordPress, use la función add_menu_page.
Veremos un ejemplo práctico en un momento, pero primero revisemos la función: acepta siete argumentos (cinco requeridos, dos opcionales):
Echemos un vistazo a un ejemplo. Localice functions.php en el entorno de pruebas de WordPress y agregue las siguientes dos funciones:
función sandbox_create_menu_page () add_action ('admin_menu', 'sandbox_create_menu_page'); función sandbox_menu_page_display ()
Tenga en cuenta que estamos utilizando el enlace admin_menu para registrar nuestro elemento de menú. Esta función en particular se activa justo después de que el menú de administración básica está en su lugar, por lo que desea registrar su menú aquí para que WordPress lo muestre mientras muestra el resto de los menús..
A continuación, vamos a configurar el elemento de menú básico. Para mantener la coherencia con los artículos anteriores de esta serie, esto es lo que planeamos hacer:
Bastante fácil, ¿verdad? Sigamos adelante y añadamos nuestro menú. Nuevamente, no simplemente copie y pegue este código. Léalo, anote los comentarios y asegúrese de que comprende perfectamente lo que estamos haciendo:
function sandbox_create_menu_page () add_menu_page ('Opciones de Sandbox', // El título que se mostrará en la página correspondiente de este menú 'Sandbox', // El texto que se mostrará para este elemento de menú real 'administrador', // Qué tipo Los usuarios pueden ver este menú 'sandbox', // La ID única, es decir, la barra, para este elemento de menú 'sandbox_menu_page_display', // El nombre de la función a la que llamar cuando se renderiza el menú para esta página "); // end sandbox_create_menu_page add_action ('admin_menu', 'sandbox_create_menu_page');
Ahora, actualice el menú de administración de WordPress y debería ver un nuevo elemento de menú. Al hacer clic en él, debería aparecer una página en blanco..
Obviamente, esto no es muy funcional. Apaguemos la función de devolución de llamada que definimos anteriormente para mostrar alguna cosa en la pantalla:
function sandbox_menu_page_display () // Crear un encabezado en el contenedor de "ajuste" de WordPress predeterminado $ html = ''; $ html. = ''; // Enviar el marcado al navegador echo $ html; // finalizar sandbox_menu_page_displaySalvadera
'; $ html. = '
La versión final de tu código debería verse así:
/ ** * Agrega un nuevo menú de nivel superior a la parte inferior del menú de administración de WordPress. * / function sandbox_create_menu_page () add_menu_page ('Opciones de Sandbox', // El título que se mostrará en la página correspondiente de este menú 'Sandbox', // El texto que se mostrará para este elemento de menú real 'administrador', // ¿Qué tipo de usuarios pueden ver este menú 'sandbox', // La ID única, es decir, el slug, para este elemento de menú 'sandbox_menu_page_display', // El nombre de la función a la que llamar cuando se renderiza el menú para esta página ") ; // finalizar sandbox_create_menu_page add_action ('admin_menu', 'sandbox_create_menu_menu_page'); / ** * Representa la visualización básica de la página del menú para el tema. * / function sandbox_menu_page_display () // Crear un encabezado en el WordPress predeterminado » envolver 'container $ html =''; $ html. = ''; // Enviar el marcado al navegador echo $ html; // finalizar sandbox_menu_page_displaySalvadera
'; $ html. = '
Aparte de cómo usar realmente la función add_menu_page, quizás la eliminación más sutil es que, en WordPress, cada elemento del menú tiene una página de menú correspondiente. Vamos a ver esto más a fondo a lo largo de la serie, pero es importante tenerlo en cuenta ahora a medida que comenzamos a explorar cada uno de los distintos tipos de menús..
Aunque esto es en gran parte incompleto, lo añadiremos a lo largo del resto de este artículo y del resto del tutorial..
Una nota sobre el posicionamiento: Muchos desarrolladores consideran que usar el argumento de posición como mala etiqueta, ya que mezcla la experiencia de usuario predeterminada con WordPress. Además, si define una posición y otro tema, complemento o función utiliza la misma posición, se puede sobrescribir uno de los elementos del menú.
Los submenús son como los menús, con la excepción de que pertenecen a otro menú: tienen un padre. Entonces, obviamente, no puede crear un submenú sin crear primero un elemento de menú. Por supuesto, como vimos en el artículo anterior, los elementos del submenú pueden introducirse en los elementos de menú existentes, no solo en los elementos de menú personalizados..
En este artículo, presentaremos una página de submenú en nuestro propio elemento de menú personalizado. Pero antes de hacer eso, echemos un vistazo a la función add_submenu_page y los parámetros que acepta:
Si desea agregar un elemento de menú a uno de los menús existentes, consulte la tabla en el artículo anterior.
Comencemos registrando un submenú para el menú existente arriba. Queremos hacer lo siguiente:
Echa un vistazo al siguiente código: lo añadiremos directamente debajo de nuestra llamada a add_menu_page:
add_submenu_page ('sandbox', // Registre este submenú con el menú definido anteriormente 'Opciones de Sandbox', // El texto que se muestra en el navegador cuando este elemento de menú está activo 'Opciones', // El texto para este elemento de menú ' administrador ', // ¿Qué tipo de usuarios pueden ver este menú' sandbox_options ', // La ID única - el slug - para este elemento de menú' sandbox_options_display '// La función utilizada para mostrar el menú de esta página en la pantalla);
No olvide definir la devolución de llamada, incluso si está vacía. Es decir, no olvide agregar esta función a su archivo (agregaremos más momentáneamente):
función sandbox_options_display () // finalizar sandbox_options_display
Cuando actualice su navegador, debería ver ahora dos Submenú de elementos directamente debajo del menú "Caja de arena". Observe que WordPress crea un elemento de submenú por sí mismo; es un elemento de submenú que corresponde al elemento de menú y la función de devolución de llamada definida. La segunda es la nueva opción de submenú que acabamos de definir, aunque no presenta contenido.
Para arreglar eso, sigamos adelante e introduzcamos una página básica. Actualice la función de devolución de llamada del submenú para verse así:
function sandbox_options_display () // Crear un encabezado en el contenedor de "ajuste" de WordPress predeterminado $ html = ''; $ html. = ''; // Enviar el marcado al navegador echo $ html; // finalizar sandbox_options_displayOpciones de caja de arena
'; $ html. = '
Actualice su navegador una vez más y debería ver un título de página básico al seleccionar el nuevo Opciones elemento de submenú.
Aunque esto no es necesario, tenga en cuenta que en realidad puede tener el elemento del menú principal y el Opciones El elemento del menú se refiere al mismo contenido: simplemente actualice la devolución de llamada en la función ad_menu_page a la sandbox_options_display
función que acabamos de definir.
Si está desarrollando un complemento de WordPress, existen diferentes formas en que su producto puede interactuar con la plataforma..
Específicamente, tu plugin ...
Para facilitar que los desarrolladores de complementos incluyan sus opciones en los menús existentes de WordPress, la API de WordPress ofrece la siguiente función: add_plugins_page.
Pero espera. Si has estado siguiendo los ejemplos anteriores, es probable que hayas notado que no parece haber una diferencia perceptible entre add_plugins_page y add_submenu_page. Tienes razón. add_plugins_page ofrece la misma funcionalidad que add_submenu_page, pero hay dos diferencias principales:
Aunque ciertamente puedes usar add_submenu_page para lograr el mismo objetivo, siempre soy un fanático del uso de funciones destinadas a un caso de uso específico, incluso si hay otra función de API que haga lo mismo. Cuando haces esto, estás demostrando que estás usando la API como los desarrolladores pretenden y estás haciendo que tu código sea un poco más cohesivo a medida que tu base de código esté más alineada con la forma en que interactúa con la plataforma central..
El desarrollo de complementos está fuera del alcance de esta serie en particular, pero no es completamente irrelevante. Aunque no se realizarán modificaciones a nuestro tema de Sandbox, quiero proporcionar un ejemplo simple que muestre cómo usar esta función en particular.
Primero, revisemos los argumentos que acepta add_plugins_page:
Aquí hay un ejemplo simple que demuestra exactamente cómo usarlo. Tenga en cuenta que puede incluir esto en su archivo functions.php pero es no parte del tema de Sandbox en el que estamos trabajando y se debe usar en el contexto de un complemento, en lugar de.
Primero, configure la llamada a la función API: observe que esto utiliza el enlace admin_menu:
function sandbox_example_plugin_menu () add_plugins_page ('Sandbox Plugin', // El título que se mostrará en la ventana del navegador para esta página. 'Sandbox Plugin', // El texto que se mostrará para este elemento de menú 'administrador', // cual el tipo de usuarios puede ver este elemento de menú 'sandbox_plugin_options', // La ID única, es decir, la barra - para este elemento de menú 'sandbox_plugin_display' // El nombre de la función a la que llamar cuando se muestra la página para este menú); // end sandbox_example_plugin_menu add_action ('admin_menu', 'sandbox_example_plugin_menu');
A continuación, configure la función que representará la pantalla del complemento:
function sandbox_plugin_display () // Crear un encabezado en el contenedor de "ajuste" de WordPress predeterminado $ html = ''; $ html. = ''; // Enviar el marcado al navegador echo $ html; // end sandbox_plugin_displayOpciones de Sandbox Plugin
'; $ html. = 'Actualmente no hay opciones. Esto es sólo para fines de demostración.
'; $ html. = '
Actualice su Panel de WordPress, pase el cursor sobre el Complementos menú y usted debe notar un nuevo elemento de menú. No esta mal eh?
La versión final del código debería verse así:
/ ** * Esta función introduce una opción de menú de un solo tema en el menú 'Complementos' de WordPress. * / function sandbox_example_plugin_menu () add_plugins_page ('Sandbox Plugin', // El título que se mostrará en la ventana del navegador para esta página. 'Sandbox Plugin', // El texto que se mostrará para este elemento de menú 'administrador', / / ¿Qué tipo de usuarios pueden ver este elemento de menú 'sandbox_plugin_options', // La ID única, es decir, la barra - para este elemento de menú 'sandbox_plugin_display' // El nombre de la función a la que llamar cuando se muestra la página de este menú) ; // end sandbox_example_theme_menu add_action ('admin_menu', 'sandbox_example_plugin_menu'); / ** * Representa una página simple para mostrar para el menú de tema definido anteriormente. * / function sandbox_plugin_display () // Crear un encabezado en el contenedor de "ajuste" de WordPress predeterminado $ html = ''; $ html. = ''; // Enviar el marcado al navegador echo $ html; // end sandbox_plugin_displayOpciones de Sandbox Plugin
'; $ html. = 'Actualmente no hay opciones. Esto es sólo para fines de demostración.
'; $ html. = '
De nuevo, esta función no será parte de nuestro tema de Sandbox porque está más orientada hacia el desarrollo de complementos; Sin embargo, vale la pena cubrir para aquellos de ustedes que aprovecharán la API de configuración en su esfuerzo de desarrollo de complementos..
Al igual que con los complementos, WordPress proporciona una función de API para introducir menús específicamente para temas. Es muy similar a la función de menú del complemento, ya que proporciona otra manera de introducir un submenú a los menús existentes. La principal diferencia es que el submenú se agrega a la Apariencia menú.
Al igual que con el ejemplo del complemento anterior en este artículo, analizaremos cómo podemos usar esta función, pero no la incluiremos en nuestro tema de Sandbox. Esto tiene el único fin de demostrar cómo usar la función en caso de que decida ir por este camino en su trabajo personal..
Primero, revisaremos los argumentos que acepta add_theme_page. Notará que son como las que se requieren para el menú del complemento y muy similares a las funciones del submenú que describimos anteriormente:
add_theme_page acepta los siguientes argumentos:
Al igual que con las otras funciones, crearemos un par de funciones de ejemplo que muestran cómo incluir esto en su proyecto. Tenga en cuenta que la llamada a add_theme_page se puede agregar a functions.php y, a diferencia de las llamadas a add_plugin_page, debería reside aquí cuando desarrolles tu tema.
Primero, la llamada para configurar el elemento del menú:
function sandbox_example_theme_menu () add_theme_page ('Sandbox Theme', // El título que se mostrará en la ventana del navegador para esta página. 'Sandbox Theme', // El texto que se mostrará para este elemento de menú 'administrador', // cual el tipo de usuarios puede ver este elemento de menú 'sandbox_theme_options', // La ID única, es decir, la barra - para este elemento de menú 'sandbox_theme_display' // El nombre de la función a la que llamar cuando se muestra la página para este menú); // end sandbox_example_theme_menu add_action ('admin_menu', 'sandbox_example_theme_menu');
A continuación, configuraremos una función para renderizar la página de opciones:
function sandbox_theme_display () // Crear un encabezado en el contenedor de "ajuste" de WordPress predeterminado $ html = ''; $ html. = ''; // Enviar el marcado al navegador echo $ html; // finaliza sandbox_theme_displayOpciones de tema de sandbox
'; $ html. = 'Actualmente no hay opciones. Esto es sólo para fines de demostración.
'; $ html. = '
Ahora actualice el Panel de WordPress, pase el cursor sobre la Apariencia menú y debería ver su nuevo elemento de menú. Sencillo!
La versión final del código debería verse así:
/ ** * Esta función introduce una opción de menú de un solo tema en el menú 'Aspecto' * de WordPress. * / function sandbox_example_theme_menu () add_theme_page ('Sandbox Theme', // El título que se mostrará en la ventana del navegador para esta página. 'Sandbox Theme', // El texto que se mostrará para este elemento de menú 'administrador', / / ¿Qué tipo de usuarios pueden ver este elemento de menú 'sandbox_theme_options', // La ID única, es decir, la barra - para este elemento de menú 'sandbox_theme_display' // El nombre de la función a la que llamar cuando se muestra la página para este menú) ; // end sandbox_example_theme_menu add_action ('admin_menu', 'sandbox_example_theme_menu'); / ** * Representa una página simple para mostrar para el menú de tema definido anteriormente. * / function sandbox_theme_display () // Crear un encabezado en el contenedor de "ajuste" de WordPress predeterminado $ html = ''; $ html. = ''; // Enviar el marcado al navegador echo $ html; // finaliza sandbox_theme_displayOpciones de tema de sandbox
'; $ html. = 'Actualmente no hay opciones. Esto es sólo para fines de demostración.
'; $ html. = '
Para aquellos de ustedes que estén interesados en hacer un desarrollo más avanzado de temas, probablemente hayan considerado las diversas formas de implementar múltiples páginas de opciones para su tema..
Por un lado, podemos agregar varios submenús a un menú de nivel superior, pero hay es Una alternativa: la navegación por pestañas. Esto se presta bien cuando desea introducir opciones al Apariencia menú y no agregar otro elemento de menú al Panel de WordPress. Discutiremos esto en mayor profundidad en el próximo artículo..
Hemos examinado cada una de las cuatro formas principales de introducir nuestras propias páginas de opciones en WordPress. Aunque estas funciones no son específicamente parte de la API de configuración, es importante discutirlas porque trabajan en estrecha colaboración con ellas..
Pero conocer estas funciones es solo la mitad. Como desarrollador responsable de la integración y la organización de las configuraciones, es importante saber cuándo usar cada una de las diversas funciones en su contexto adecuado..
Aunque no hay una respuesta mágica para cuándo usar cada función, aquí hay algunas pautas a tener en cuenta al trabajar en sus funciones personalizadas, complementos y / o tema:
Una palabra sobre menús personalizados: Aunque WordPress nos brinda la posibilidad de agregar nuestros propios menús de nivel superior, agregarlos a cualquier menú existente, y en general nos brinda la capacidad de hacer lo que queremos con la configuración predeterminada, una parte de la comunidad no ve con buenos ojos esto. Creen que la funcionalidad personalizada no debe interferir con ciertos menús principales. Aunque en última instancia depende de usted, implemente su trabajo con discernimiento; es probable que pocas cosas que haga sean más importantes que la funcionalidad principal de WordPress, así que no coloque su trabajo por encima de eso..
En el siguiente artículo, aplicaremos un poco de lo que hemos aprendido sobre los menús y comenzaremos a introducir páginas de opciones para nuestro tema de Sandbox..
Además de agregar páginas de menú, también analizaremos la navegación con pestañas y cómo podemos implementarla para que funcione junto con nuestras propias páginas de menú..
Mientras tanto, revisa los artículos anteriores de esta serie y no olvides revisar la versión actual de la Configuración de WordPress en GitHub..
Cubrimos bastantes recursos en este artículo. Aquí hay un resumen de todo lo que usamos: