Cuando crea un tema de WordPress, vale la pena tomarse un tiempo para identificar dónde puede evitar la repetición de código. Esto te da unos cuantos beneficios:
En mi experiencia, el más importante de estos puntos es el segundo: cuando he tenido que editar temas por cualquier motivo, la tarea se hace mucho más fácil si cada parte del código solo está allí una vez..
En este tutorial, le mostraré algunas de las formas en que puede adoptar el principio No repetirse, o SECAR, en el desarrollo de su tema, haciéndose más eficiente y menos estresado en el proceso..
Que es no gustar?
El uso de un marco, ya sea de terceros o de terceros, significa que gran parte del código que necesita ya estará disponible cuando comience, y que no se encontrará escribiendo el mismo código nuevamente y de nuevo (o incluso en absoluto).
La cantidad de código que necesita en su marco de trabajo dependerá de usted; es posible que prefiera usar un marco de barebones que luego agregue, o uno más completo del cual seleccione la funcionalidad para su proyecto..
Además de los marcos, hay un número creciente de temas de inicio disponibles para ayudar a acelerar la codificación. Actualmente, el tema más utilizado es el tema _s, que le brinda los aspectos básicos que necesita para crear rápidamente temas de WordPress..
Alternativamente, puede que prefiera crear sus propios temas de inicio, que incluyen el código básico que usa una y otra vez en los proyectos. Puede crear uno simple que agregue, o varias versiones diferentes para diferentes tipos de proyectos..
Obtendrá el máximo provecho de su inversión en términos de temática DRY si utiliza partes de plantilla. El más obvio de estos son los archivos de encabezado, pie de página y barra lateral, pero también puede usar archivos de bucle y otras partes de la plantilla para hacer que su código sea más eficiente..
Esperemos que no necesite que le diga esto; SIEMPRE debería usar archivos de plantilla separados para su encabezado (header.php
), barra lateral (barra lateral.php
), y pie de página (footer.php
). Luego, llama a estos en cada uno de sus archivos de plantilla usando estas etiquetas de plantilla:
get_header ()
get_sidebar ()
get_footer ()
Pero no necesitabas que te dijera eso, así que pasemos a un uso más avanzado de las partes de la plantilla..
En ocasiones, es posible que desee utilizar un encabezado, barra lateral o pie de página diferente para diferentes áreas de su sitio. Puedes hacerlo fácilmente, creando múltiples archivos..
Por ejemplo, supongamos que desea utilizar una barra lateral diferente en sus páginas de archivo. Deberías crear un archivo para esta barra lateral llamada barra lateral-archivo.php
. En tus archive.php
archivo de plantilla, entonces reemplazaría el estándar get_sidebar ()
etiqueta con get_sidebar ('archivo')
.
Esto le brinda la flexibilidad de tener una barra lateral adicional, que luego puede usar en múltiples archivos de plantilla. Por ejemplo, es posible que desee utilizarlo en las plantillas de archivo para tipos de publicación específicos. Así que si tuvieras un tipo de publicación llamado botón
, Usted crearía una plantilla de archivo llamada archive-button.php
, y en eso usarías el get_sidebar ('archivo')
etiqueta.
Este enfoque tiene algunas desventajas: si su barra lateral.php
y barra lateral-archivo.php
los archivos tienen un montón de código repetitivo, su tema no sigue el principio DRY lo suficientemente cerca. Si este es el caso, puedes elegir usar etiquetas condicionales, las cuales cubriré más adelante en este tutorial..
Además de las partes de plantilla para el encabezado, pie de página y barra lateral, también puede crear otras partes de plantilla. A continuación, llame a estas partes de la plantilla utilizando el get_template_part ()
etiqueta.
El uso más común de esto es para el bucle. El bucle es un fragmento de código que se repite a menudo en varias plantillas, por lo que tiene sentido sacarlo de cada una de esas plantillas y colocarlo en un archivo propio..
Para ello, creas un archivo llamado loop.php
con el código de tu bucle y luego lo llamas usando get_template_part ('loop')
. Esto efectivamente arrastra todo el código de su archivo de bucle a su plantilla.
Puedes llevar esto más lejos con múltiples bucles. Por ejemplo, si tuviera un bucle ligeramente diferente para los archivos, crearía un archivo llamado loop-archive.php
y llámalo usando get_template_part ('loop', 'archive')
. Sencillo!
A veces es más eficiente usar etiquetas condicionales en lugar de archivos de plantilla separados. WordPress viene con un conjunto de etiquetas condicionales que puede usar para verificar qué tipo de contenido se está viendo en un momento dado o qué plantilla de página se está usando. Por lo tanto, puede usarlos para verificar si se está utilizando una plantilla específica y luego agregar un código si es así. Esto le ahorra la creación de un archivo de plantilla adicional si sus archivos de plantilla tienen una gran cantidad de código duplicado.
Ilustraré esto con un ejemplo. Digamos que tienes una barra lateral con un área de widgets registrada. En las páginas individuales para un tipo de publicación determinada, desea agregar una segunda área de widgets. Es posible que desee hacer esto si desea enumerar otras publicaciones de ese tipo de publicación en un widget, por ejemplo.
Podría crear un archivo de barra lateral separado llamado barra lateral-xxx.php
, dónde xxx
es su tipo de publicación, y luego llame al archivo de plantilla para su tipo de publicación. O simplemente puede usar un archivo de barra lateral con una etiqueta condicional para agregar el área de widget adicional de la siguiente manera:
En tus barra lateral.php
archivo, ya tendrá un área de widget registrada, que podría verse así:
Esto mostrará el área del widget de la barra lateral si se ha llenado con widgets.
Luego puede agregar una segunda barra lateral usando la is_singular ()
etiqueta condicional:
if (is_singular ('xxx') && is_active_sidebar ('xxx-sidebar-widget-area')) ?>Esto comprueba si el área del widget está poblada de la misma forma que el primer ejemplo, pero agrega un control adicional a eso
Si
declaración:is_singular ('xxx')
. Esto comprueba si el sitio está mostrando actualmente una sola página para elxxx
tipo de mensaje. Si ese es el caso y el área del widget se llena, entonces se mostrará.4. Convertir el código repetitivo en una función
Si su código se repetirá una y otra vez en todo el sitio y no se puede colocar en un archivo de inclusión propio, entonces otra solución es ponerlo en una función y luego llamar a esa función en cualquier lugar de su plantilla. quiere que aparezca el código.
Por ejemplo, es posible que tenga algún código para mostrar un cuadro de llamada a la acción:
// el contenido de la CTA va aquí Repetir el mismo código en varios lugares de su tema sería una mala práctica, ya que agregaría un código adicional y le haría muy difícil enmendar el código con precisión si lo necesitaba en el futuro. En su lugar, podría envolverlo en una función y luego colocarla en lugares relevantes en su tema.
Tu función se vería así:
función wptp_cta () ?>// el contenido de la CTA va aquí Luego, si necesitaba que su cuadro de llamada a la acción apareciera en lugares de su tema, como barras laterales o pies de página, solo escribiría la función en el archivo de plantilla relevante:
wptp_cta ();La gran ventaja de esto es que si desea cambiar la llamada a la acción en el futuro, solo necesita cambiar la función una vez, y el cambio se reflejará en todos los aspectos de su tema..
5. Enganchar el código a los ganchos de acción
El siguiente paso en el desarrollo del tema DRY es utilizar ganchos de acción en su tema..
Se crea un gancho de acción utilizando el
acción_ ()
función, y luego adjuntar funciones a ese gancho utilizandoadd_action ()
.Esto le da mucha más flexibilidad en la forma en que usa su código recurrente y le permite especificar no solo en qué parte del tema aparecerá, sino en qué circunstancias, utilizando una combinación de funciones y etiquetas condicionales..
También significa que si está creando temas secundarios utilizando su tema original como tema principal, puede adjuntar funciones de su tema secundario a la función del tema principal..
Volveré a mi ejemplo de barra lateral. En lugar de codificar el área del widget en mi
barra lateral.php
archivo, solo le agrego una acción, dándole un nombre único:do_action ('wptp_sidebar');Esto crea un gancho de acción en mi tema, al que puedo adjuntar funciones personalizadas.
En mi
funciones.php
archivo, luego engancho el código de la barra lateral estándar a esta acción de la siguiente manera:función wptp_sidebar_default () if (is_active_sidebar ('sidebar-widget-area')) ?>he usado
add_action ()
con dos parámetros:wptp_sidebar
, el nombre del gancho, ywptp_sidebar_default
, El nombre de la función.Así que esa es la barra lateral estándar agregada a mi tema. Para agregar la barra lateral para mi tipo de publicación, agrego una segunda función a mi
funciones.php
archiva y engancha al mismo gancho de acción:función wptp_xxx_sidebar () if (is_singular ('xxx') && is_active_sidebar ('xxx-sidebar-widget-area')) ?>Esto envuelve mi segunda barra lateral en una función y luego activa esa función en el
wptp_sidebar
gancho de acción también. Un par de cosas a anotar:
add_action
función.15
a mi segunda funcion Como la prioridad predeterminada (que se habrá asignado a mi primera función) es 10, esto significa que WordPress activará esta segunda función después de la primera, por lo que xxx
la barra lateral aparecerá debajo de la predeterminada.Las ideas que he cubierto anteriormente no son una lista exhaustiva de métodos para adoptar el principio DRY al desarrollar temas de WordPress, pero ofrecen una introducción a algunos de los métodos más efectivos que puede usar..
Si desea asegurarse de que sus temas sean lo más eficientes posible, le aconsejaría tomarse un tiempo para planificar la estructura de su tema antes de comenzar a escribir el código. Identifique dónde se duplicará el código y qué método sería el mejor para evitar la repetición del código y el esfuerzo. Trabaje a través de las ideas anteriores, usando la que le ahorrará más tiempo y código. Esto te ayudará a desarrollar el tema en el futuro..