J'ai ceci dans mon functions.php
fichier et je ne peux pas charger jQuery dans le pied de page. Les includes
charges de fichiers dans le pied de page, bien cependant. Que dois-je faire d'autre?
function starter_scripts() {
wp_enqueue_style( 'starter-style', get_stylesheet_uri() );
wp_enqueue_script( 'jquery', '', '', '', true );
wp_enqueue_script( 'includes', get_template_directory_uri() . '/js/min/includes.min.js', '', '', true );
}
add_action( 'wp_enqueue_scripts', 'starter_scripts' );
defer
plutôt ajouter à vos balises de script: matthewhorne.me/defer-async-wordpress-scriptsRéponses:
Pour ce faire, vous devrez d'abord annuler l'enregistrement de votre script jQuery, puis vous enregistrer à nouveau. Si vous utilisez jQuery fourni avec WordPress, voici la fonction que vous recherchez.
Si vous utilisez la version hébergée par Google CDN de jQuery, faites-moi savoir que je modifierai ce code pour l'URL de Google CDN.
la source
wp_enqueue_scripts
est utilisé uniquement sur le front-end alors qu'iladmin_enqueue_scripts
est utilisé pour le back-endVoici une autre option qui évite d'avoir à se désinscrire et à se réinscrire:
Cette solution de base de mimiques en mettant l'
group
à1
, ce qui est de savoir comment WordPress détermine si un script doit être dans le pied de page ou non (je ne suis pas au courant du raisonnement1
, comme @jgraup indiqué dans les commentaires il semble arbitraire bits).la source
wp_register_script
utilisationsadd_data( $handle, 'group', 1 )
pour déplacer des scripts dans le pied de page. core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… - Pourriez-vous nous expliquer pourquoi? En regardant votre code, «groupe» semble un peu arbitraire. Mais je peux voir dans core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… comment il est utilisé dans WP_Scripts->do_item
plus tard. Quoi qu'il en soit, cela semble être la réponse la moins destructrice.Une meilleure solution:
Pourquoi c'est mieux que la réponse acceptée OMI
$footer = true
.À propos de ne pas faire cela à l'administrateur
Si les plugins ajoutent jquery en ligne à wp_head, il échouera lorsque jquery n'est pas chargé à ce stade, je vous suggère donc d'éviter cela jusqu'à ce que des millions de personnes modifient votre site et que vous essayez d'optimiser les performances de votre administrateur. Cela est également vrai pour le frontend, vous devez donc faire attention aux mauvais thèmes codés ou aux plugins qui supposent jquery dans la tête en utilisant du code jQuery en ligne. WP et les plugins enregistrent d'autres scripts dans la tête d'administration avec jquery en deps donc ça ne marcherait pas de toute façon je pense.
À ce sujet ne fonctionne pas
Vous devez être conscient que si un autre script est chargé dans la tête qui a jQuery dans ses dépendances, il fera également charger jQuery dans la tête juste avant lui-même. Et c'est bon et attendu, la raison pour laquelle le système wp_enqueue existe. Cela signifie que vous apprendrez bientôt si vous utilisez quelques plugins que l'un d'entre eux nécessitera une requête en tête. C'est la valeur par défaut pour les scripts mis en file d'attente, malheureusement.
Solution radicale
Je pense que cela freinera tout JS en ligne qui suppose jquery mais cela devrait être rare. Cela forcera tous les scripts au pied de page, quelle que soit la façon dont ils sont mis en file d'attente.
la source
J'ai développé un plugin pour ce problème spécifique. Ce plugin ne dérange pas avec WordPress jQuery car il n'est chargé que dans le front-end. Voir: jQuery Manager pour WordPress
Presque tout le monde utilise la mauvaise poignée
WordPress utilise en fait le handle jquery-core, pas jquery:
La bonne façon de le faire
Dans mon exemple ci-dessous, j'utilise le CDN jQuery officiel sur https://code.jquery.com J'utilise également script_loader_tag pour pouvoir ajouter des attributs CDN.
Vous pouvez utiliser le code suivant:
la source
la source
Hé, changez seulement votre code pour aimer ça
je pense que ça marche bien
ajoutez ces lignes dans votre fichier functions.php
puis il ajoute un script dans le pied de page
la source
remove_action
/ queadd_action
si vous voulez le faire de cette façon.