Comment Passer une variable avec get_template_part pour WordPress

0

L'inconvénient de get_template_part, c'est qu'on ne peut pas passer une variable comme lors d'un require classique. Pourtant, une petite subtilité permet quand même de le faire

Qui n’a jamais pesté devant son code lorsque que vous voulez simplement réutiliser votre variable $poo dans votre template que vous appelez, comme le force demande WordPress, avec la fonction  get_template_part() ? Voici un code tout simple qui ne fonctionne pas:

$poo = 'toto';
 get_template_part('single', 'toto);

Le fichier single-toto.php:

echo $toto;

Rien, nada, quedchi ….

L’astuce pourtant est toute simple. Il suffit d’ajouter votre variable à $wp_query via set_query_var. le code devient alors:

$poo = 'toto';
 set_query_var( 'poo', $poo );
 get_template_part('single', 'toto);

Et voilou …. $poo est accessible dans votre template single-toto.php, mais aussi tout autre template qui serait appelé par la suite. Mais pourquoi donc …

La fonction get_template_part() fait appel à locate_template() qui ensuite fait appel à load_template() pour finalement retrouver votre template via un require() ou require_once(). Si on observe le code de la fonction load_template(), on remarque un petit bout de code intéressant juste avant le require() :

extract( $wp_query->query_vars, EXTR_SKIP );

C’est ici que la magie s’opère.

Notez que vous pouvez ensuite retirer cette variable juste après votre get_template_part() via remove_query_var(‘poo)



Recevoir la newsletter

Recevoir la newsletter

Recevez les dernières news et astuces Wordpress & Développement Web par email une fois par semaine

Bravo, vous êtes inscrits