Mettre en file d'attente jQuery core dans le pied de page?
-
-
Si vousfaites celapour des raisons deperformances,vouspouvezenvisager d'ajouter `defer` à vosbalises de script à laplace: https://matthewhorne.me/defer-async-wordpress-scripts/If you're doing this for performance reasons, you could consider adding `defer` to your script tags instead: https://matthewhorne.me/defer-async-wordpress-scripts/
- 0
- 2017-08-25
- diachedelic
-
WP devici,j'ai créé unpluginpourgérer cela: https://wordpress.org/plugins/jquery-manager/WP dev here, I made a plugin to deal with this: https://wordpress.org/plugins/jquery-manager/
- 0
- 2019-07-04
- Remzi Cavdar
-
5 réponses
- votes
-
- 2014-12-30
Pour cefaire,vous devrez d'abord désenregistrer votre scriptjQuery,puis vous réinscrire. Si vous utilisezjQueryestfourni avec WordPress,voici lafonction 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éepar Google CDN dejQuery,faites-moi savoir queje modifierai ce codepour l'URL Google CDN.
To do that you will first have to deregister your jQuery script and then register again. If you use jQuery comes with WordPress then following is the function your are looking for.
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' );
If you use Google CDN hosted version of jQuery then let me know I will modify this code for Google CDN URL.
-
J'aiessayé celaet toujours dans lepied depage,uneidéepourquoi?I Tried this and still in the footer, any idea why?
- 0
- 2015-09-03
- Toni Michel Caubet
-
Que voulez-vous dire?La solution consiste à déplacerjQuery vers lepied depage.What do you mean? The solution is about moving jQuery to footer.
- 6
- 2015-09-03
- Robert hue
-
Vous devrezpeut-être également vérifieris_admin ()pour éviter d'apporter desmodifications aubackendjQuery,aprèstout,nousn'avons vraimentbesoin que d'optimiser lefrontend denos sites :)You might also need to check is_admin() to avoid making changes to the backend jQuery, after all we only really need to optimise the frontend of our sites :)
- 2
- 2016-10-20
- Tim Malone
-
@TimMalone -en fait,vousne lefaitespas - `wp_enqueue_scripts`est utilisé uniquement sur lefront-endtandis que` admin_enqueue_scripts`est utilisépour leback-end@TimMalone - actually, you don't - `wp_enqueue_scripts` is used only on front end while `admin_enqueue_scripts` is used for back end
- 1
- 2017-03-04
- dev_masta
-
Parfois celane fonctionnepas car unplugin ajoute son script avec leparamètre "in_footer"false.Celaprovoque le déplacement du scriptjquery vers head.Sometimes it doesn't work because a plugin add its script with "in_footer" parameter false. This cause the jquery script to move to head.
- 0
- 2017-03-08
- Pons
-
Jepense que cette solutionesten fait horrible.Lesbalises de version sont-elles supprimées avec cela.Qu'est-ce que ce style de démarrageet c'est-à-direincludes.min.jset qu'est-ce que cela a à voir avecjQuery.I think this solution is actually horrible. Are the version tags are removed with this. What is this starter-style and that is this includes.min.js and what has it to do with jQuery.
- 1
- 2017-07-31
- NextGenThemes
-
@redanimalwar starter-styleet inclut lesfichiers sont directement àpartir de la question.@redanimalwar starter-style and includes files are directly from the question.
- 2
- 2018-01-16
- tehlivi
-
@Roberthue Je suistoujours à la recherche denouveaux développeurs qui aiment aider àmaintenir unprojet open source,voir: https://wordpress.org/plugins/jquery-manager/et https://github.com/Remzi1993/jquery-managerceplugin/projet devrait aider les utilisateurs à utiliser la dernière version dejQuery d'un simple clic.@Roberthue I'm still looking for more devs who like to help maintain an open sourche project, see: https://wordpress.org/plugins/jquery-manager/ and https://github.com/Remzi1993/jquery-manager this plugin / project should help users to use the latest version of jQuery with a simple click.
- 0
- 2019-07-04
- Remzi Cavdar
-
- 2016-05-07
Voici une autre option qui évite d'avoir à se désinscrireet à se 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 cœur de WordPress en définissant le
group
sur1
,c'est ainsi que WordPress détermine si un script doit être dans lepied depage ounon (jene connaispas le raisonnementpour1
,comme @jgraup l'anoté dans les commentaires,cela semble unpeu arbitraire).Here's another option which avoids having to de-register and re-register:
/** * 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' );
This solution mimics WordPress core by setting the
group
to1
, which is how WordPress determines if a script should be in the footer or not (I'm not aware of the reasoning for1
, as @jgraup noted in the comments it seems a bit arbitrary).-
Intéressant.Il semble que `wp_register_script` utilise` add_data ($ handle,'group',1) `pour déplacer les scripts dans lepied depage.https://core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/functions.wp-scripts.php#L117 - Pourriez-vousexpliquerpourquoi?En regardant votre code,«groupe» semble unpeu arbitraire.Maisje peux voir dans https://core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/class.wp-scripts.php#L231 commentilest utilisé dans WP_Scripts-> `do_item`plustard.Quoi qu'ilen soit,cela semble être la réponse lamoins destructrice.Interesting. It looks like `wp_register_script` uses `add_data( $handle, 'group', 1 )` to move scripts into the footer. https://core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/functions.wp-scripts.php#L117 - Could you expand on why that is? Glancing at your code, 'group' seems a bit arbitrary. But I can see in https://core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/class.wp-scripts.php#L231 how it's used in WP_Scripts->`do_item` later. Either way, this would seem to be the least destructive answer.
- 1
- 2016-05-07
- jgraup
-
J'espère que quelqu'unpourra commenter davantage cestrois réponsespositives.Tous sont différentset nécessitent une certaine connaissance de WP.Étant donné que Googleexige que ces scripts soienten dessous dupli,il s'agit d'un sujetimportant.I hope someone can comment further on these three upvoted answers. All are different and require some knowledge of WP. Because google requires these scripts to be below the fold, this is an important topic.
- 2
- 2016-05-18
- ssaltman
-
Meilleure réponse!** Note **: celafonctionne depuis WordPress 4.2.0et utilisez-le dansfunctions.php dans le callback du hook 'wp_enqueue_scripts'Best answer! **Note**: it works since WordPress 4.2.0 and use it in functions.php in hook 'wp_enqueue_scripts' callback
- 3
- 2016-07-01
- realmag777
-
Salut,j'aiessayé l'approche ci-dessus,mais celan'apasfonctionné.Quelqu'unpeut-il aider?Hi I tried the above approach, but it didn't worked. Can anyone help?
- 0
- 2016-08-31
- iSaumya
-
@iSaumya Vous devrezpeut-être ajouter quelques détails sur les raisonspour lesquelles celan'apasfonctionné/ce qui s'estpassé.C'est une demande assez cryptique!Voir aussi l'autrenouvelle réponse,et gardez à l'esprit que cette réponse doitencore êtreenveloppée dans un appel defonctionet defiltre.@iSaumya You might have to add some details on why it didn't work / what happened. That's a pretty cryptic request! See also the other new answer, and keep in mind this answer still needs to be wrapped in a function and filter call.
- 0
- 2016-10-20
- Tim Malone
-
@tim J'aiessayé cepeu,ilne poussetoujourspas le script aupied depage.Cest ce quiest arrivé.@tim I've tried that bit it is still not pushing the scrip to footer. That's what happened.
- 0
- 2016-10-20
- iSaumya
-
@iSaumya J'ai ajouté quelques détails supplémentairespour vous,j'espère que cela vous aidera!@iSaumya I added some additional detail for you, I hope this helps!
- 0
- 2016-10-21
- Matthew Boynes
-
WordPress utilise unetelle ancienne version dejQuery,à ce rythme,ilestpréférable de se désinscrireet de s'inscrire à la dernière version.WordPress uses such an old version of jQuery, at this rate it is better to deregister and register to the newest version.
- 0
- 2018-01-16
- tehlivi
-
C'esttellementbon!Mercibeaucoup.Mais,il convient denoter que @tehlivi le déclare - WP utilise une ancienne version dejQuery -envisagez de vous désinscrireet d'enregistrer une versionplus récente.This is so good! Thank you so much. But, worth noting is as @tehlivi states - WP uses an old version of jQuery - consider deregistering and registering a newer version.
- 1
- 2018-03-08
- skolind
-
Ce codem'a renvoyé uneerreur 500.J'ai WordPress 4.9.9This code returned me a 500 error. I have WordPress 4.9.9
- 0
- 2019-01-08
- Marco Panichi
-
@MarcoPanichi vous avezpeut-être unthème ou unpluginen conflit?Pouvez-vous l'essayer sur unetoutenouvelleinstallation de wordpress sansplugins ajoutéset en utilisant lethèmepar défaut?@MarcoPanichi perhaps you have a conflicting theme or plugin? Can you try it on a brand new installation of wordpress with no plugins added and using the default theme?
- 0
- 2019-01-08
- Matthew Boynes
-
@MatthewBoynes Jepense que vous avez raison.Sur une autreinstallation,celafonctionne.@MatthewBoynes I think you are right. On an other installation it works.
- 0
- 2019-01-09
- Marco Panichi
-
@MatthewBoynes Je suistoujours à la recherche de développeurs qui aiment aider àmaintenir unprojet open source,voir: https://wordpress.org/plugins/jquery-manager/et https://github.com/Remzi1993/jquery-managerceplugin/projet devrait aider les utilisateurs à utiliser la dernière version dejQuery d'un simple clic.@MatthewBoynes I'm still looking for more devs who like to help maintain an open sourche project, see: https://wordpress.org/plugins/jquery-manager/ and https://github.com/Remzi1993/jquery-manager this plugin / project should help users to use the latest version of jQuery with a simple click.
- 0
- 2019-07-04
- Remzi Cavdar
-
Celafonctionnemais «1»est un «nombremagique».S'il change,ce code se cassera.Etmalheureusement,nousne savonspas ce que c'est,doncnousne pouvonspas le remplacerpar une constante.Est-ce que quelqu'un sait vraiment de quoiil s'agit?This works but `1` is a "magic number". If it changes this code will break. And unfortunately we don't know what it is, so we can't replace it with a constant. Does anyone actually know what it refers to??
- 0
- 2019-12-08
- lonix
-
Leparamètre ** 1 ** répond à la question "Doit-on déplacer le script vers lepied depage?"dans lafonction - Cela signifie "vrai"je pense.Parameter **1** answers the question "Should we move the script to the footer?" in the function - It means "true" I think.
- 0
- 2020-01-16
- Simo Patrek
-
- 2016-09-26
Unemeilleure 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'estmieux que la réponse acceptée IMO
- Lemodifie au cœurmêmepas à un stade ultérieur où d'autres chosespourraient déjà êtreperturbées.
- La chaîne de version qu'il a conservéeet non supprimée!
- Ilne désenregistrepaset ne réenregistrepas un script,maisil définit simplement la valeur degroupe quiestessentiellement lamême que si le script étaitenregistré avec
$footer = true
.
Àpropos dene pasfaire cela à l'administrateur
Si lesplugins ajoutentjqueryen ligne à wp_head,cela échouera lorsquejqueryn'estpas chargé à ce stade,je vous suggère donc d'éviter celajusqu'à ce que desmillions depersonnesmodifient votre siteet que vousessayez d'optimiser lesperformances de votre administrateur. Celaest également vraipour lefrontend,vous devez doncfaire attention auxmauvaisthèmes ouplugins codés qui supposentjquery dans latêteen utilisant du codejQueryen ligne. WPet lespluginsenregistrent d'autres scripts dans latête de l'administrateur avecjquery dans depspour que celane fonctionnepas detoutefaçonje pense.
Àpropos de celane fonctionnepas
Vous devez être conscient que si un autre scriptest chargé dans latête qui ajQuery dans ses dépendances,ilfera également chargerjQuery dans latêtejuste avant lui-même. Et c'estbien et attendu,la raisonpour laquelle le système wp_enqueueexiste. Cela signifie que vous apprendrezbientôt si vous utilisez quelquesplugins que l'un d'euxnécessiteraprovoquerajquery à latête. C'estmalheureusement la valeurpar défautpour les scriptsmisen file d'attente.
Solution radicale
Jepense que celafreinetout JSen ligne qui supposejquerymais si cela devrait être rare. Celaforcera tous les scripts aupied depage,quelle que soit lamanière dontils sontmisen file d'attente.
add_action( 'wp_enqueue_scripts', 'js_to_footer' ); function js_to_footer() { remove_action( 'wp_head', 'wp_print_scripts' ); remove_action( 'wp_head', 'wp_print_head_scripts', 9 ); remove_action( 'wp_head', 'wp_enqueue_scripts', 1 ); }
A better 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 ); }
Why its better then the accepted answer IMO
- Changes it at the very core not at a later stage where other things might already messed with it.
- The version string it kept in place and not removed!
- It does not unregister and reregister a script but it just sets the group value that is essentially the same as if the script would be registered with
$footer = true
.
About not doing this to the admin
If plugins add inline jquery to the wp_head it will fail when jquery is not loaded at that point, so I suggest you avoid that until you have millions editing your site and you try to performance optimize your admin. This is true for frontend as well so you should watch out for bad coded themes or plugins that assume jquery in the head by using inline jQuery code. WP and plugins register other scripts to the admin head with jquery in deps so it would not work anyway I think.
About it not working
You need to be aware that if any other script is loaded to the head that has jQuery in its dependencies, it will also make jQuery load in the head right before itself. And this is good and expected, the reason the wp_enqueue system exists. This means you will learn soon if you use a few plugins that one of them will require cause jquery to the head. It the the default for enqueued scripts, sadly.
Radical Solution
I think it will brake any inline JS that assumes jquery but should that should be rare. This will force all scripts to the footer regardless of how they are enqueued.
add_action( 'wp_enqueue_scripts', 'js_to_footer' ); function js_to_footer() { remove_action( 'wp_head', 'wp_print_scripts' ); remove_action( 'wp_head', 'wp_print_head_scripts', 9 ); remove_action( 'wp_head', 'wp_enqueue_scripts', 1 ); }
-
Bien que celapuisse répondre à la questionet ait quelquesbonspoints àmâcher,il y atrop debruit (duvet?) Dans la réponseet esttrès similaire aux réponsesprécédemmentpubliées avec des améliorationsmineures du code.Ilpourrait êtremieux reçu s'il était éditéet réduit à une versionplusinformative.Iln'y apasnonplus vraimentbesoin d'appeler des utilisateurs ou des réponses spécifiques (carilspeuventne pasexisterpour une raison quelconque à l'avenir).While this may answer the question and has some good points to chew on there's too much noise (fluff?) in the answer and is very similar to the previously posted answers with minor code improvements. It may be more well received if it were edited and slimmed down into a more informational version. There's also no real need to call out specific users or answers ( as they may not exist for whatever reason in the future ).
- 2
- 2016-10-21
- Howdy_McGee
-
Vous appelez une solutiontotalementnonmentionnéeet probablementmeilleure quetout ce quiestmentionné dans d'autres réponses «améliorationsmineures du code».Ehbien,c'esttout simplementfaux.Deplus,je n'ai "appelé"personne,j'ai simplementmentionné desfaits queje connaispour améliorer le style de codageet éduquer les lecteurs à ce sujetpour leurfaire écrire unmeilleur code.Sérieusement,j'aipris un certaintempspour écrire lameilleure réponsejusqu'iciet c'est ce quej'obtiens.You call a completely unmentioned and probably better then anything mentioned in other answers "minor code improvements". Well thats simply untrue. Also I did not "call out" anyone, I just mentioned facts that I know to improve coding style and educate readers about it to make them write better code. Seriously I did take quite some time to write the best answer here to far and this is what I get for it.
- 0
- 2016-10-21
- NextGenThemes
-
Les autres réponsesne mentionnent rien sur les autres scriptsforçant lejQuery à latête,en faitma réponse éloigne la confusion desgens quine saventpaspourquoi celane fonctionnepas.Aucune des autres réponsesne mentionne les risquespotentiels ...The other answers mention nothing about others scripts forcing the jQuery to the head, in fact my answer takes the confusion away from people who don't know why its not working. None of the others answers mention the potential risks ...
- 4
- 2016-10-21
- NextGenThemes
-
Ce code (comme le code de la réponse ci-dessus)m'a renvoyé uneerreur 500.J'ai WordPress 4.9.9This code (as the code of the answer above) returned me a 500 error. I have WordPress 4.9.9
- 0
- 2019-01-08
- Marco Panichi
-
Difficile de croire que ce code cause un 500,vous avezprobablementfait uneerreuren l'implémentant dans votre code.Cen'estpas vraiment lebonendroitpour demanderet votre version obsolète de WPne fournitguère d'informations suffisantes.Hard to believe that this code is causing a 500, you probably have made a mistake in implementing this in your code. This is not really the right place to ask and your outdated WP version is hardly enough information.
- 0
- 2019-01-09
- NextGenThemes
-
@NextGenThemes Je suistoujours à la recherche de développeurs qui aiment aider àmaintenir unprojet open source,voir: https://wordpress.org/plugins/jquery-manager/et https://github.com/Remzi1993/jquery-managerceplugin/projet devrait aider les utilisateurs à utiliser la dernière version dejQuery d'un simple clic.@NextGenThemes I'm still looking for more devs who like to help maintain an open sourche project, see: https://wordpress.org/plugins/jquery-manager/ and https://github.com/Remzi1993/jquery-manager this plugin / project should help users to use the latest version of jQuery with a simple click.
- 0
- 2019-07-04
- Remzi Cavdar
-
- 2019-05-17
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 ); }
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 ); }
-
- 2014-12-30
Hé,changez seulement votre codepour aimer ça
function starter_scripts() { wp_enqueue_style( 'starter-style', get_stylesheet_uri() ); wp_enqueue_script('jquery'); wp_enqueue_script( 'includes', get_template_directory_uri() . '/js/min/includes.min.js', array( 'jquery' ) ); } add_action( 'wp_enqueue_scripts', 'starter_scripts' );
Jepense que celafonctionnebien
ajoutez ces lignes dans votrefichierfunctions.php
remove_action('wp_head', 'wp_enqueue_scripts', 1); add_action('wp_footer', 'wp_enqueue_scripts', 5);
puisil ajoute un script dans lepied depage
Hey only change your code to like this
function starter_scripts() { wp_enqueue_style( 'starter-style', get_stylesheet_uri() ); wp_enqueue_script('jquery'); wp_enqueue_script( 'includes', get_template_directory_uri() . '/js/min/includes.min.js', array( 'jquery' ) ); } add_action( 'wp_enqueue_scripts', 'starter_scripts' );
i think it work fine
add this lines into your functions.php file
remove_action('wp_head', 'wp_enqueue_scripts', 1); add_action('wp_footer', 'wp_enqueue_scripts', 5);
then it add script into footer
-
Celamet jQuery dans latête.J'en aibesoin dans lepied depage.This puts jQuery in the head. I need it in the footer.
- 0
- 2014-12-30
- Desi
-
Hey Desi s'il vousplaît vérifier la réponsemodifiée,je pense que cela vous aideHey Desi please check the edited answer I think it help you
- 0
- 2014-12-30
- Amit Mishra
-
Je suispresque sûr que c'est uneidéeterrible - vous avezeffectivementempêché _anything_ de charger des scripts dans l'en-tête,pas seulementjQuery,et peut-être des scriptsen doublefile d'attente (vousn'avezpas regardé aussiprofondément).Enfait,vousn'avezprobablementbesoin que de lapartie `remove_action`/` add_action` si vous allez lefaire de cettefaçon.I'm pretty sure this is a terrible idea -- you've effectively prevented _anything_ from loading scripts in the header, not just jQuery, and might be double-enqueuing scripts (haven't looked that deeply). In fact, you probably only need the `remove_action` / `add_action` part if you're going to do it this way.
- 6
- 2016-01-26
- drzaus
-
Eneffet terribleidée,ne faitespas ça!Indeed terrible idea, don't do this!
- 1
- 2016-09-26
- NextGenThemes
J'ai ceci dansmonfichier
functions.php
et jen'arrivepas à chargerjQuery dans lepied depage.Lefichierincludes
les chargements defichiers dans lepied depage,cependant.Que dois-jefaire d'autre?