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.

Vous pourriez aussi être intéressés par

WordPress 4.3 "Billie" est sorti

La version 4.3 de Wordpress, BILLIE - du nom du musicien Billie Holiday - est sortie ce 18 août. Retour sur les changements majeurs de cette mise à jour pour les dev et les blogueurs.

Août 19 2015