J'ai ceci dans mon fichier functions.php
et je ne peux pas charger jQuery dans le pied de page. Le fichier includes
se charge toutefois dans le pied de page. 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' );
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.
function starter_scripts() {
wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', includes_url( '/js/jquery/jquery.js' ), false, NULL, true );
wp_enqueue_script( 'jquery' );
wp_enqueue_style( 'starter-style', get_stylesheet_uri() );
wp_enqueue_script( 'includes', get_template_directory_uri() . '/js/min/includes.min.js', '', '', true );
}
add_action( 'wp_enqueue_scripts', 'starter_scripts' );
Si vous utilisez la version hébergée de jQuery sur CDN de Google, signalez-moi que je modifierai ce code pour l'URL de CDN de Google.
Voici une autre option qui vous évite de vous désinscrire et de vous réinscrire:
/**
* Move jQuery to the footer.
*/
function wpse_173601_enqueue_scripts() {
wp_scripts()->add_data( 'jquery', 'group', 1 );
wp_scripts()->add_data( 'jquery-core', 'group', 1 );
wp_scripts()->add_data( 'jquery-migrate', 'group', 1 );
}
add_action( 'wp_enqueue_scripts', 'wpse_173601_enqueue_scripts' );
Cette solution imite le noyau WordPress en définissant la variable group
sur 1
, qui permet à WordPress de déterminer si un script doit figurer dans le pied de page ou non (je ne connais pas le raisonnement de 1
, comme indiqué par @jgraup dans les commentaires cela semble un peu arbitraire).
Une meilleure solution:
add_action( 'wp_default_scripts', 'move_jquery_into_footer' );
function move_jquery_into_footer( $wp_scripts ) {
if( is_admin() ) {
return;
}
$wp_scripts->add_data( 'jquery', 'group', 1 );
$wp_scripts->add_data( 'jquery-core', 'group', 1 );
$wp_scripts->add_data( 'jquery-migrate', 'group', 1 );
}
Pourquoi c'est mieux que la réponse acceptée OMI
$footer = true
.A propos de ne pas faire cela à l'administrateur
Si les plugins ajoutent un jquery en ligne à wp_head, il échouera si jquery n'est pas chargé à ce moment-là. Je vous suggère donc de l'éviter tant que des millions de personnes n'ont pas modifié votre site et que vous essayez d'optimiser les performances de votre administrateur. Cela vaut également pour le front-end, vous devez donc vous méfier des thèmes ou plugins mal codés qui prennent JQuery dans la tête en utilisant du code jQuery inline.
A propos, ça ne marche pas
Vous devez savoir que si un autre script chargé dans la tête contient jQuery dans ses dépendances, il se chargera également de charger jQuery dans la tête juste avant lui-même. Et c’est bien et prévu, la raison pour laquelle le système wp_enqueue existe.
add_action("wp_enqueue_scripts", "myscripts");
function myscripts() {
wp_enqueue_script( 'jquery' , '', array(), true); //true for footer
wp_enqueue_script( 'someScript-js', 'https://domain.com/someScript.js' , '', '', true );
}