2020/09/26 Tengan en cuenta que a partir de la versión 5.5.0 se agregó a la funcion get_template_part() la variable $args y ahora WP tiene la función nativa para pasar variables!
Así como funcionan las funciones de PHP include() o require() en el desarrollo de WordPress se tiene get_template_part() para cargar templates, en castellano plantillas, que como bien sabemos son archivos .php para que se vean luego en el frontend, el theme o tema de WordPress.
Hay casos en los que necesitamos pasar variables entre las partes de la plantilla, y aquí nos encontramos con que no podemos pasarles datos con la función nativa, por lo menos «así nomás». Que vamos a hacer entoncces?
¿Por qué usar get_template_part()?
Porque es la lógica dentro de WordPress para utilizar correctamente los Child Themes.
Si queremos llamar a otros archivos es la función correcta. Cuando hagamos un llamado mediante esta función WordPress primero va a fijarse si ya existe un archivo con el mismo nombre y ruta en el child.
Ahora presten atención, las variables que declaremos en el archivo que utilicemos la función get_template_part() no van a llegar, van a estar vacías. Por ejemplo:
<?php
/* ejemplo de variable */
$variable = 'Ejemplo de contenido de variable';
while( have_posts() ):
the_post();
get_template_part( 'prodprincipal' );
endwhile;
?>
En prodprincipal.php no va a estar definida la variable.
<?php
/* prodprincipal.php */
the_title();
the_content();
echo $variable; //Undefined
?>
Qué hacemos???
Vamos a usar include() and locate_template(). Si nos fijamos bien get_template_part() utuliza otra función llamada locate_template() que es la que utiliza para detectar la exitencia del archivo en el child, además de cargar la vista en caso de que se lo explicitemos. De todas maneras también va a darnos el mismo problema que con get_template_part(), pero podemos combinarla con la función nativa de PHP include() para lograr lo que necesitamos. Fíjense que en este caso vamos a tener que escribir el nombre completo del archivo, y agregarle dos declaraciones de false para evitar que en vez de cargar el archivo nos devuelva sólo la ruta
<?php
/* ejemplo de variable */
$variable = 'Ejemplo de contenido de variable';
while( have_posts() ):
the_post();
//fíjense que en este caso vamos a tener que escribir el nombre completo del archivo, y agregarle dos declaraciones de false para evitar que en vez de cargar el archivo nos devuelva sólo la ruta
include( locate_template( 'prodprincipal.php', false, false ) );
endwhile;
?>
Y ahora sí, de esta manera vamos a poder usar las varibales declaradas!!!
Les sirvió? 😉