J'ai déjà ajouté mes scripts, mais je voulais connaître la méthode préférée.
Je viens de mettre une <script>
balise directement dans le header.php
de mon modèle.
Existe-t-il une méthode préférée pour insérer des fichiers js externes ou personnalisés?
Comment pourrais-je lier un fichier js à une seule page? (J'ai la page d'accueil en tête)
theme-development
javascript
Naugtur
la source
la source
Réponses:
Utilisez
wp_enqueue_script()
dans votre thèmeLa réponse de base est d'utiliser
wp_enqueue_script()
dans unwp_enqueue_scripts
crochet pour front-endadmin_enqueue_scripts
pour admin. Cela pourrait ressembler à quelque chose comme ceci (qui suppose que vous appelez depuis lefunctions.php
fichier de votre thème ; notez comment je référence le répertoire de la feuille de style):C'est la base.
Scripts dépendants prédéfinis et multiples
Mais supposons que vous souhaitiez inclure jQuery et jQuery UI Sortable dans la liste des scripts par défaut fournis avec WordPress et que vous souhaitiez que votre script en dépende? Facile, il suffit d' inclure les deux premiers scripts en utilisant les prédéfinis poignées définies dans WordPress et pour votre script fournir un 3ème paramètre
wp_enqueue_script()
qui est un tableau du script utilisé par poignées chaque script, comme suit:Scripts dans un plugin
Et si vous voulez le faire dans un plugin à la place? Utilisez la
plugins_url()
fonction pour spécifier l'URL de votre fichier Javascript:Versions de vos scripts
Notez également que ci - dessus, nous avons attribué à notre plug-in un numéro de version que nous lui avons transmis en tant que 4ème paramètre
wp_enqueue_script()
. Le numéro de version est indiqué dans le code source sous forme d'argument de requête dans l'URL du script et force le navigateur à télécharger à nouveau le fichier éventuellement mis en cache si la version est modifiée.Charger des scripts uniquement sur les pages où cela est nécessaire
La 1ère règle de Web Performance stipule de minimiser les requêtes HTTP afin de limiter le plus possible le chargement des scripts, le cas échéant. Par exemple, si vous n'avez besoin que de votre script dans l'administrateur, limitez-le aux pages d'administration à l'aide du
admin_enqueue_scripts
crochet:Chargez vos scripts dans le pied de page
Si vos scripts font partie de ceux qui doivent être chargés dans le pied de page, un cinquième paramètre
wp_enqueue_script()
indique à WordPress de le retarder et de le placer dans le pied de page (en supposant que votre thème ne se soit pas mal comporté et qu'il appelle effectivement le hook wp_footer comme tout le monde). bons thèmes WordPress devraient ):Contrôle plus fin du grain
Si vous avez besoin d'un contrôle plus précis que cela, Ozh a publié un article intitulé Comment: charger du code JavaScript avec votre plug - in WordPress, qui détaille davantage.
Désactiver les scripts pour prendre le contrôle
Justin Tadlock a un bel article intitulé Comment désactiver les scripts et les styles au cas où vous souhaiteriez:
Passer des valeurs de PHP à JS avec
wp_localize_script()
Sur son blog, Vladimir Prelovac a publié un excellent article intitulé " Meilleure pratique pour ajouter du code JavaScript aux plugins WordPress", dans lequel il discute de l'utilisation
wp_localize_script()
afin de vous permettre de définir la valeur des variables dans votre PHP côté serveur pour une utilisation ultérieure dans votre code Javascript côté client.Contrôle vraiment fin avec grain
wp_print_scripts()
Et enfin, si vous avez besoin d'un contrôle vraiment précis, vous pouvez vous pencher
wp_print_scripts()
sur Beer Planet dans un article intitulé Comment inclure CSS et JavaScript de manière conditionnelle et uniquement lorsque cela est nécessaire .Epiloque
C’est à peu près tout pour les meilleures pratiques d’inclusion de fichiers Javascript avec WordPress. Si j'ai oublié quelque chose (que j'ai probablement), assurez-vous de me le faire savoir dans les commentaires afin que je puisse ajouter une mise à jour pour les futurs voyageurs.
la source
admin_init
lieu de demanderis_admin()
. Supprimez le paramètre version si vous utilisez le CDN Google. Dans le cas contraire, le cache du navigateur contiendra deux versions: une sans la chaîne de requête d'autres sites et la vôtre.Pour complimenter Mikes de la merveilleuse illustration de l’utilisation des files d’attente, je tiens à souligner que les scripts inclus en tant que dépendances n’ont pas besoin d’être mis en file d'attente ...
J'utiliserai l'exemple sous l' en- tête Scripts in Plugin dans la réponse de Mike.
Cela peut être réduit pour lire ..
Lorsque vous définissez des dépendances, WordPress les trouve et les met en file d'attente pour votre script. Vous n'avez donc pas besoin d'appeler de manière indépendante ces scripts.
De plus, certains d'entre vous se demandent peut-être si la définition de plusieurs dépendances peut entraîner la sortie de scripts dans le mauvais ordre, laissez-moi vous donner un exemple.
Si le script deux dépend du script trois (c.-à-d. Que le script trois doit être chargé en premier), cela n'a pas d'importance, WordPress déterminera les priorités de mise en file d'attente de ces scripts et les affichera dans le bon ordre. En bref, tout se règle automatiquement. pour vous par WordPress.
la source
init
n'est pas le bon endroit pour envoyer la file d'attente.Pour les petits morceaux de scripts, que vous ne souhaitez peut-être pas inclure dans un fichier séparé, par exemple parce qu'ils sont générés de manière dynamique, WordPress 4.5 et d'autres offres
wp_add_inline_script
. Cette fonction verrouille le script sur un autre script.Supposons, par exemple, que vous développiez un thème et que vous souhaitiez que votre client puisse insérer ses propres scripts (tels que Google Analytics ou AddThis) via la page des options. Vous pouvez ensuite utiliser
wp_add_inline_script
pour verrouiller ce script sur votre fichier js principal (disonsmainjs
) comme ceci:la source
Ma méthode préférée est d'obtenir de bonnes performances. Par conséquent, plutôt que d'
wp_enqueue_script
utiliser HEREDOC avec l'API Fetch pour tout charger de manière asynchrone en parallèle:Et ensuite, insérez-les dans la tête, parfois avec des styles comme celui-ci:
Il en résulte une chute d'eau qui ressemble à ceci, chargeant tout en même temps mais contrôlant l'ordre d'exécution:
Remarque: Cela nécessite l'utilisation de l'API Fetch, qui n'est pas disponible dans tous les navigateurs.
la source