Comment Passer une variable avec get_template_part pour WordPress

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)

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.