Comment ajouter un extrait de code javascript au pied de page qui nécessite jQuery
-
-
Iln'y apas defonctionintégréepourfaire cela queje connaisse,c'estpourquoi `wp_register_script`et` wp_enqueue_script`existent,mais vouspouvez vérifieren utilisantjquery lui-même.There is no built in function to do this that I know, it is why `wp_register_script` and `wp_enqueue_script` exist, but you can check using jquery itself.
- 0
- 2011-11-06
- Wyck
-
Désolépour le vote défavorable,maisje nepensepas que vous compreniezma question.J'ai lu le codexet je connais l'option.Maisje ne veuxpas `wp_enqueue_script` unfichier de script dans lepied depage,je veux ajouter unextrait dans lepied depage quinécessitejquery.* J'ai décliné la réponse directementtirée du codex.J'ai lu le codex,et jen'aipastrouvé de réponse,c'estpourquoije pose une question.Si vousme redirigez ànouveau vers le codex,je déconseille. *Sorry for the downvote, but I do not think you understand my question. I have read the codex, and know about the option. But I do not want to `wp_enqueue_script` a script file into the footer, I want to add a snippet into the footer that requires jquery. *I downvoted the answer directly taken from the codex. I read the codex, and did not find an answer, that's why I ask a question. If you redirect me to the codex again I downvote.*
- 2
- 2011-11-06
- Saif Bechan
-
Merci wyck,je pense que c'est le cas,merci d'avoirbien compris la question.Jepense queje vais simplement utiliser un script JSexterne à laplacepour être sûr que le scriptpeut êtreexécuté.Thanks wyck, I think this is the case, thank you for understanding the question correctly. I think I will just use an external JS script instead than to be sure the script can be run.
- 0
- 2011-11-06
- Saif Bechan
-
5 réponses
- votes
-
- 2011-11-06
Lemoyen leplus simple de lefaireesten fait une combinaison de
wp_enqueue_script
et des actions depied depage déjà référencéespar Saifet v0idless. J'utilisefréquemmentjQuery dansmesthèmeset plugins,maisje mets égalementtous les autres scripts dans lepied depage.Lameilleurefaçon demettre les chosesen file d'attente serait la suivante:
function myscript() { ?> <script type="text/javascript"> if ( undefined !== window.jQuery ) { // script dependent on jQuery } </script> <?php } add_action( 'wp_footer', 'myscript' ); function myscript_jquery() { wp_enqueue_script( 'jquery' ); } add_action( 'wp_head' , 'myscript_jquery' );
Mais ce codeextrait suppose que vous êtes celui quimet le scripten file d'attente,c'est-à-dire que vousfaites cela dans votrepropreplugin outhème.
Pour lemoment,iln'y a aucunmoyen d'ajouter un scripten ligne aupied depage WordPresset de le charger également avec des dépendances. Maisilexiste une alternative,si vous le souhaitez.
L'alternative
Lorsque WordPressfonctionne avec des scripts,il les chargeen interne dans un objetpouren garder unetrace. Il y aessentiellement 3 listes à l'intérieur de l'objet:
- enregistré
- file d'attente
- terminé
- to_do
Lorsque vous enregistrez pour lapremièrefois un script avec
wp_register_scripts()
,ilestplacé dans la listeenregistrée. Lorsque vouswp_enqueue_script()
le script,ilest copié dans la liste desfiles d'attente. Unefois qu'il a étéimprimé sur lapage,ilest ajouté à la listeterminée.Ainsi,plutôt que demettreen file d'attente votre script depied depagepourexigerjQuery,vouspouvez documenter qu'il doit utiliserjQueryet simplement vérifierparprogrammepour vous assurer quejQueryest chargé.
Cela utilise
wp_script_is()
pour vérifier où setrouve le script répertorié.function myscript() { if( wp_script_is( 'jquery', 'done' ) ) { ?> <script type="text/javascript"> // script dependent on jQuery </script> <?php } } add_action( 'wp_footer', 'myscript' );
Vous pourriez êtreen mesure d'utiliser cemême codepourforcerjQuery à se charger dans lepied depage également,maisje n'aipastesté cela ... donc votre kilométrage varie.
The easiest way to do this is actually a combination of
wp_enqueue_script
and the footer actions that Saif and v0idless already referenced. I frequently use jQuery in my themes and plugins, but I put all of the other scripts in the footer as well.The best way to actually queue things up would be this:
function myscript() { ?> <script type="text/javascript"> if ( undefined !== window.jQuery ) { // script dependent on jQuery } </script> <?php } add_action( 'wp_footer', 'myscript' ); function myscript_jquery() { wp_enqueue_script( 'jquery' ); } add_action( 'wp_head' , 'myscript_jquery' );
But this code snipped assumes that you're the one queueing the script, i.e. you're doing this in your own plugin or theme.
At the moment, there is no way to add an in-line script to the WordPress footer and also load it with dependencies. But there is an alternative, if you're willing.
The alternative
When WordPress works with scripts, it loads them internally to an object to keep track of them. There are essentially 3 lists inside the object:
- registered
- queue
- done
- to_do
When you first register a script with
wp_register_scripts()
it's placed in the registered list. When youwp_enqueue_script()
the script, it's copied to the queue list. After it's been printed to the page, it's added to the done list.So, rather than queueing your footer script to require jQuery, you can document that it needs to use jQuery and just check programatically to make sure jQuery is loaded.
This uses
wp_script_is()
to check where the script is listed.function myscript() { if( wp_script_is( 'jquery', 'done' ) ) { ?> <script type="text/javascript"> // script dependent on jQuery </script> <?php } } add_action( 'wp_footer', 'myscript' );
You might be able to use this same code to force jQuery to load in the footer as well, but I haven't tested that ... so your mileage my vary.
-
L'extrait de codefourniest-il acceptépar lesnormes de développement deplugins WordPress?Si oui,alorsje vais l'utiliser dansmonplugin ...merci deme répondre à ce sujet ...does your provided code snippet is accepted by WordPress plugin development standards ? If yes, then I will be using it in my plugin ... please give me a reply upon this ...
- 0
- 2016-10-19
- laraib
-
Le dernierextrait?Non. Lesplugins WordPress doivent _toujours_mettreen file d'attente lesexigences des scripts.ForcerjQuery à se chargeren dehors du système defiles d'attente de cettemanièren'est que quelque chose que vous devriezfaire sur votrepropre site où vous contrôlez 100% de l'environnement.Iln'estjamais approprié qu'unpluginfasse cela.The last snippet? No. WordPress plugins should _always_ enqueue script requirements. Forcing jQuery to load outside of the queue system in this way is only something you should do on your own site where you control 100% of the environment. It is _never_ appropriate for a plugin to do that.
- 0
- 2016-10-20
- EAMann
-
alorspouvez-vousme donner unexemple detravailpour cela s'il vousplaît ...????then can u give me some working example for that please ... ????
- 0
- 2016-10-20
- laraib
-
Parce queje développemontoutpremierplugin WordPresset j'aimerais que cela soit acceptépar l'équipe WordPress ...en attendant votre réponse,s'il vousplaît .... ayez votremot à dire à ce sujet afin queje puisse créeret faire acceptermonplugin...Because I am developing my first ever WordPress plugin and I would love to have that accepted by the WordPress team ... waiting for any of your response please .... have your say about this so that I can create and make accepted my plugin ...
- 0
- 2016-10-20
- laraib
-
- 2016-06-25
Depuis wordpress 4.5,vouspouvez ajouter un scripten lignepar
wp_add_inline_script()
.Pour ajouter unextrait de codejavascript aupied depage quinécessitejQuery,ce code vous aidefunction enqueue_jquery_in_footer( &$scripts ) { if ( ! is_admin() ) $scripts->add_data( 'jquery', 'group', 1 ); } add_action( 'wp_default_scripts', 'enqueue_jquery_in_footer' ); function theme_prefix_enqueue_script() { if(!wp_script_is('jquery', 'done')) { wp_enqueue_script('jquery'); } wp_add_inline_script( 'jquery-migrate', 'jQuery(document).ready(function(){});' ); } add_action( 'wp_enqueue_scripts', 'theme_prefix_enqueue_script' );
Since wordpress 4.5 you can add inline script by
wp_add_inline_script()
. To add a javascript snippet to the footer that requires jQuery, this code helps youfunction enqueue_jquery_in_footer( &$scripts ) { if ( ! is_admin() ) $scripts->add_data( 'jquery', 'group', 1 ); } add_action( 'wp_default_scripts', 'enqueue_jquery_in_footer' ); function theme_prefix_enqueue_script() { if(!wp_script_is('jquery', 'done')) { wp_enqueue_script('jquery'); } wp_add_inline_script( 'jquery-migrate', 'jQuery(document).ready(function(){});' ); } add_action( 'wp_enqueue_scripts', 'theme_prefix_enqueue_script' );
-
- 2011-11-06
Utilisez l'action
wp_footer
comme ceci:add_action( 'wp_footer', 'wpse33008'); function wpse33008() { ?> <script type="text/javascript"> /** INSERT SCRIPT HERE **/ </script> <?php }
Use the
wp_footer
action like this:add_action( 'wp_footer', 'wpse33008'); function wpse33008() { ?> <script type="text/javascript"> /** INSERT SCRIPT HERE **/ </script> <?php }
-
Cen'estpas unebonne réponse.J'ai demandé commentje pourrais spécifier le script requisjQuery.Si l'utilisateurn'apasjqueryen cours d'exécution,votreimplémentationne serapasexécutée.This is not a good answer. I asked how I could specify the script required jQuery. If the user does not have jquery running your implementation will not run.
- 1
- 2011-11-06
- Saif Bechan
-
- 2018-07-25
Je sais que OP veut spécifier uneexigence surjQuery,et les auteurs de WordPress auraient dû autoriser lesextraits de code à êtremisen file d'attente à côté desfichiers de script,maisilsne l'ontpasfait,je recommande donc dene pasessayeril.Si vousne voulezpas dutoutgâcher lafile d'attente ou son ordre,commemoi (carj'utilise d'autresplugins qui combinentet optimisent les scripts),alors la réponseest vraiment d'utiliser le
wp_footer
action comme ça:<?php add_action( 'wp_footer' , function() { ?> <script> if (window.jQuery) { // your snippet } </script> <?php } , 21 # after enqueued footer scripts );
I know OP wants to specify a requirement on jQuery, and WordPress' authors should have allowed snippets to be enqueued adjacent to script files, but they didn't, so I recommend not trying to force it. If you don't want to mess with the queue or its order at all, like me (because I'm using other plugins that combine and optimise scripts), then the answer really is to use the
wp_footer
action like so:<?php add_action( 'wp_footer' , function() { ?> <script> if (window.jQuery) { // your snippet } </script> <?php } , 21 # after enqueued footer scripts );
-
-
Je sais,mais commentpouvez-vous spécifier que le script que vous ajoutez aupied depage dépend dejquery.Vérifiezmamodificationpour êtreplusprécis.I know, but how can you specify that the script you add to the footer is depending on jquery. Check my edit to be more spicific.
- 0
- 2011-11-06
- Saif Bechan
-
Avez-vousmême lapeine de lire le codex avant de voter contre les réponses desgens?Avez-vous déjà lu l'argument `in_footer` de` wp_enqueue_script`?Lisez ceci: http://codex.wordpress.org/Function_Reference/wp_enqueue_script.Il vousindique comment l'utiliser avec l'action `wp_footer`.Do you even bother to read around the codex before voting down people's answers? Have you ever read about the `in_footer` argument to `wp_enqueue_script`? Read this: http://codex.wordpress.org/Function_Reference/wp_enqueue_script. It tells you how to use it with the `wp_footer` action.
- 1
- 2011-11-06
- Rutwick Gangurde
-
Je sais queje peux ajouter unfichier de script aupied depage de wordpress quinécessitejqueryen utilisant ce code:
Mais quefaire sije veux ajouterjuste unextraitnormal dejqueryinline,pas unfichier. Comment celapeut-il êtrefait?
Modifier
Je sais queje peux utiliser ce scriptpour ajouter quelque chose aupied depage:
Mais comment spécifier le script utilisé nécessitejquery pour s'exécuter.