web-dev-qa-db-fra.com

Comment puis-je mettre en file d'attente (ou retarder le chargement de) balises <script> dans des publications de page individuelles?

Mon client a de nombreuses pages avec des éléments <script>, y compris javascript.

<script src="myscriptforthispageonly.js"></script>

J'essaie de charger tous les scripts dans le pied de page avec wp_enqueue_script(), mais je ne sais pas comment mettre en file d'attente un script depuis une page.

Encore une fois, cela se trouve dans une page Wordpress . Est-il possible de mettre en file d'attente un script externe à partir d'une page ou post ?

Si ce n'est pas possible, est-il possible de retarder le chargement du script jusqu'à ce que l'événement onload se déclenche?

2
brentonstrine

Réponse générale: vous pouvez appeler wp_enqueue_script() directement dans le modèle, à partir de WordPress 3.4 (IIRC).

Donc, si vous avez:

<script src="myscriptforthispageonly.js"></script>

Vous pouvez le remplacer par:

<?php wp_enqueue_script( 'this-page-script', get_template_directory_uri() . '/myscriptforthispageonly.js', array( 'jquery' ), null, true ); ?>

Modifier

De ce commentaire:

C'est à partir d'une page. Comme dans une page Wordpress. Aucun modèle. Imaginez que vous écrivez une mise à jour de blog Wordpress, vous passez au HTML

La meilleure chose à faire serait de définir un shortcode que l'utilisateur mettrait dans le contenu du message, au lieu de placer un <script> s'appelant directement dans le message contenu. Ensuite, dans votre rappel de code abrégé, vous pouvez appeler wp_enqueue_script().

3
Chip Bennett