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
google disavow links

Google : outil pour refuser et désavouer des liens

Si vous estimez que le classement de votre site est mis à mal par la faible qualité des liens que vous ne contrôlez pas, vous pouvez demander à Google de ne pas les prendre en compte lors de l'évaluation de votre site.

Oct 17 2012
facebook developers

Créer une application Facebook

Je vous propose un tuto pour suivre pas à pas les étapes de création d'une application pour Facebook à l'aide de PHP. J'ai choisi de créer un petit quizz viral, le principe de base sera le même pour créer toute autre application facebook.

Août 03 2013