Pasar variables a una plantilla de WordPress de manera eficiente
Un desafío que enfrentan los desarrolladores de temas o complementos get_template_part
es la incapacidad de pasar variables a la plantilla de WordPress cargada. Hay, sin embargo, una alternativa usando locate_template
.
Visión general
En este ejemplo, vamos a mostrar tres entradas de Easy Digital Download . He estado usando EDD por un tiempo y aunque tiene muchas características, todavía es sorprendentemente liviano.
Buscaremos las entradas y las guardaremos en la variable $edd_download
. Luego cargaremos la plantilla de WordPress pasando la variable. En realidad, pasar la variable es decir demasiado: simplemente cargaremos la plantilla de manera que la $edd_download
variable tenga el alcance adecuado para ser utilizada en la plantilla cargada.
Cargando una plantilla de WordPress
Este código se puede colocar en una función. Luego puede conectar esa función a un área de su tema usando un enlace de acción o simplemente llamar a la función como una etiqueta de plantilla. En mis temas, uso ganchos para que los usuarios puedan agregar o eliminar contenido más adelante. Esto es todo lo que necesitamos para el código:
Código de plantilla
Ahora necesitamos el archivo de plantilla de WordPress. Si nota la llamada anterior, locate_template
espera encontrar el archivo download-home.php
en el directorio parts
dentro de la carpeta del tema.
Siempre debemos recordar llamar wp_reset_postdata()
después de un bucle foreach si llamamos setup_postdata()
.
Palabras de cierre
Entonces, después de todo esto, ¿por qué es útil? porque los usuarios pueden crear una plantilla en un tema secundario y anular fácilmente la plantilla original. Se trata de hacerles la vida más fácil a sus usuarios. Claro, esto también se puede lograr a través de filtros o creando funciones conectables, pero algunos usuarios podrían considerar editar una plantilla centrada en una tarea como un enfoque más limpio que tratar con un archivo con muchas funciones para varias tareas diferentes y no relacionadas.