Le WP Codex dit de faire ceci:
// You wish to make $my_var available to the template part at `content-part.php`
set_query_var( 'my_var', $my_var );
get_template_part( 'content', 'part' );
Mais comment puis-je echo $my_var
dans la partie du modèle? get_query_var($my_var)
ne fonctionne pas pour moi.
J'ai vu des tonnes de recommandations pour utiliser à la locate_template
place. Est-ce la meilleure façon de faire?
variables
get-template-part
Florian
la source
la source
set_query_var
etget_query_var
, mais cela était pour utiliser les valeurs d'un$args
tableau qui est passé à unWP_Query
. Cela pourrait être utile pour les autres personnes qui commencent à apprendre cela.Réponses:
Lorsque les publications établissent leurs données via
the_post()
(respectivement viasetup_postdata()
) et sont donc accessibles via l'API (get_the_ID()
par exemple), supposons que nous parcourions un ensemble d'utilisateurs (car ilssetup_userdata()
remplissent les variables globales de l' utilisateur actuellement connecté et isn ' t utile pour cette tâche) et essayez d’afficher les métadonnées par utilisateur:Ensuite, dans notre
wpse-theme/template-parts/user-contact_methods.php
fichier, nous devons accéder à l'ID utilisateur:C'est ça.
L'explication est en réalité exactement au-dessus de la partie que vous avez citée dans votre question:
La
extract()
fonction PHP native "extrait" les variables (laglobal $wp_query->query_vars
propriété) et place chaque partie dans sa propre variable qui porte exactement le même nom que la clé. En d'autres termes:la source
La
hm_get_template_part
fonction créée par humanmade est extrêmement efficace et je l’utilise tout le temps.Tu appelles
et à l'intérieur de votre modèle, vous utilisez
pour renvoyer la valeur. Il fait la mise en cache et tout, même si vous pouvez le supprimer si vous le souhaitez.
Vous pouvez même renvoyer le modèle rendu sous forme de chaîne en le passant
'return' => true
dans le tableau clé / valeur.la source
Je cherchais autour de moi et ai trouvé une variété de réponses. Cela semble au niveau natif, Wordpress permet d’accéder aux variables dans les parties modèles. J'ai constaté que l'utilisation de l'include associée à la méthode position_template permettait aux variables de rester accessibles dans le fichier.
la source
include
ne passera pas la vérification .Je recommande de lire sur la fonction PHP Extract ().
la source
J'ai rencontré le même problème sur un projet sur lequel je travaille actuellement. J'ai décidé de créer mon propre petit plugin qui vous permet de transmettre plus explicitement des variables à get_template_part en utilisant une nouvelle fonction.
Au cas où cela vous serait utile, voici la page correspondante sur GitHub: https://github.com/JolekPress/Get-Template-Part-With-Variables
Et voici un exemple de la façon dont cela fonctionnerait:
la source
J'aime le plugin Pods et leur fonction pods_view . Cela fonctionne comme la
hm_get_template_part
fonction mentionnée dans la réponse de djb. J'utilise une fonction supplémentaire (findTemplate
dans le code ci-dessous) pour rechercher un fichier de modèle dans le thème actuel, et si non trouvé, il renvoie le modèle du même nom dans le/templates
dossier de mon plugin . Ceci est une idée approximative de la façon dont j'utilisepods_view
dans mon plugin:pods_view
prend également en charge la mise en cache, mais je n'en avais pas besoin pour mes besoins. Vous trouverez plus d'informations sur les arguments de la fonction dans les pages de documentation de Pods. Reportez-vous aux pages pods_view et Mise en cache partielle des pages et parties de modèle dynamique avec des modules .la source
Basé sur la réponse de @djb en utilisant le code de humanmade.
Il s'agit d'une version allégée de get_template_part pouvant accepter les arguments. De cette façon, les variables sont localisées localement à ce modèle. Pas besoin d'avoir
global
,get_query_var
,set_query_var
.Par exemple dans
cart.php
:Dans
apple.php
:la source
Que dis-tu de ça?
En utilisant,
${$key}
vous pouvez ajouter les variables dans la portée de la fonction actuelle. Fonctionne pour moi, rapide et facile, sans fuites ni stockage global.la source
Pour ceux qui cherchent un moyen très facile de passer des variables, vous pouvez changer de fonction pour inclure:
Et ensuite, vous pourrez utiliser toutes les variables définies avant d’inclure le modèle sans PASSING, ni chacune d’elles pour le modèle.
Les crédits vont à: https://mekshq.com/passing-variables-via-get_template_part-wordpress/
la source
C'est la solution exacte et cela a bien fonctionné. https://developer.wordpress.org/reference/functions/set_query_var/
la source