Nous l'avons lu à plusieurs reprises - un bon citoyen WordPress ne charge son code JavaScript que là où il est nécessaire. Cette pratique minimise les temps de chargement du site et les conflits avec d'autres scripts. Cependant, la plupart des articles ne traitent que de l'utilisation de wp_enqueue_script
pour le chargement conditionnel de JavaScript dans le contexte de l'administrateur WordPress, des pages d'administration du plug-in ou des pages front-end dans leur ensemble. Mais qu'en est-il d'isoler notre JavaScript à un particulier l'extrémité avant page? Nous pourrions potentiellement avoir envie de si
WordPress fournit une API utile avec un filtre pour gérer ce genre de choses sans problème. si
- alors jetons un coup d'oeil sous le capot.
"un bon citoyen WordPress charge uniquement son JavaScript là où il le faut"
Lorsqu'une page WordPress est demandée par un lecteur, le chargeur de modèles WordPress vérifie si le modèle approprié existe et une fonction nommée get_query_template
est appelé. Cette fonction localise le modèle approprié en fonction de la demande de page WordPress et renvoie le chemin d'accès complet au modèle. Cependant, avant de renvoyer le chemin, cela permet de modifier la sortie à l’aide de la touche $ type _template
filtre. $ type
est le nom de fichier du modèle sans l'extension.
get_query_template
Une fonction Donc, si un lecteur demandait un page de post unique sur un site qui a utilisé le thème Twenty Eleven, $ type
évaluerait à 'unique'
et nous pourrions utiliser un filtre nommé 'single_template'
pour modifier le chemin d'accès au modèle de publication unique avant qu'il ne soit renvoyé pour être chargé par WordPress. Ce filtre ressemblerait à ceci:
add_filter ('single_template', 'benchpress_single_template'); function benchpress_single_template ($ template_path) // on fait quelque chose ici return $ template_path;
et nous donne exactement ce dont nous avons besoin: un moyen de cibler chaque type de fichier / modèle de page spécifique afin d’isoler notre code JavaScript de certaines pages frontales de WordPress. Tout fichier de page / modèle peut maintenant être ciblé en utilisant simplement un filtre avec le nom du fichier de modèle. Impressionnant!
Maintenant mettons-les ensemble, étape par étape.
Rappelez-vous que le nom du filtre sera le nom du fichier modèle sans l'extension. Donc, en utilisant le thème Twenty Eleven et désirant cibler notre JavaScript à la auteur pages uniquement, nous ajouterions le code suivant à notre functions.php fichier:
add_filter ('author_template', 'benchpress_author_template');
function benchpress_author_template ($ template_path) wp_enqueue_script ('nom unique du script', get_stylesheet_directory_uri (). 'chemin / vers / script'); wp_enqueue_style ('nom unique de la feuille de style', get_stylesheet_directory_uri (). 'chemin / vers / feuille de style'); return $ template_path;
Notez que le filtre passe la valeur du chemin du gabarit à notre rappel et nous retournons $ template_path
sains et saufs parce que nous n'avons pas besoin de le changer.
Qu'en est-il du chargement conditionnel de JavaScript généré dans mon PHP?
J'ai vu cette question et bien que je ne sois pas sûr que ce soit le cas meilleur Ainsi, voici une façon de gérer cela.
Ajoutez la ligne suivante à la fonction de rappel du filtre:
add_action ('wp_head', 'benchpress_dynamic_js');
Ajoutez ensuite votre fonction de rappel pour le wp_head
filtre:
fonction benchpress_dynamic_js () if (! is_admin ()) echo '';
Donc le code complet ressemblera à ceci:
add_filter ('author_template', 'benchpress_author_template'); function benchpress_author_template ($ template_path) wp_enqueue_script ('nom unique du script', get_stylesheet_directory_uri (). 'chemin / vers / script'); wp_enqueue_style ('nom unique de la feuille de style', get_stylesheet_directory_uri (). 'chemin / vers / feuille de style'); add_action ('wp_head', 'benchpress_dynamic_js'); return $ template_path; function benchpress_dynamic_js () if (! is_admin ()) echo '';
Fonctions WordPress
wp_enqueue_script
get_query_template
add_filter
wp_enqueue_style
is_admin
Filtres WordPress
$ type _template
wp_head
Fichiers de modèle WordPress