Come aggiungere uno snippet javascript al piè di pagina che richiede jQuery
-
-
Nonesiste unafunzioneincorporataperfarlo cheio sappia,èper questo cheesistono `wp_register_script`e` wp_enqueue_script`,mapuoi controllare usandojquery stesso.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
-
Scusaperil votonegativo,manon credo chetu abbia capito lamia domanda.Ho lettoil codicee so dell'opzione.Manon voglio `wp_enqueue_script` unfile di scriptnelfooter,voglio aggiungere uno snippetnelfooter che richiedejquery.* Ho downvotato la rispostapresa direttamente dal codice.Ho lettoil codicee non hotrovato risposta,eccoperchéfaccio una domanda.Semi reindirizzi dinuovo al codice,ho un votonegativo. *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
-
Grazie wyck,penso che sia così,grazieper aver compreso correttamente la domanda.Penso che userò solo uno script JSesternoinvece diessere sicuro che lo scriptpossaessereeseguito.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 risposta
- voti
-
- 2011-11-06
Ilmodopiù sempliceperfarlo èin realtà una combinazione di
wp_enqueue_script
e le azioni delpiè dipagina a cui Saife v0idless hannogiàfatto riferimento. Uso spessojQuerynei mieitemi eplugin,mainserisco anchetuttigli altri scriptnelpiè dipagina.Ilmodomigliorepermettereeffettivamentein coda le cose sarebbe questo:
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' );
Ma questo codicetagliatopresume chetu sia quello chemette in coda lo script,cioè lo staifacendoneltuoplugin otema.
Almomento,non èpossibile aggiungere uno scriptin linea alpiè dipagina di WordPresse caricarlo anche con le dipendenze. Ma c'è un'alternativa,se lo desideri.
L'alternativa
Quando WordPress lavora congli script,li caricainternamente a un oggettopertenernetraccia. Ci sonoessenzialmente 3elenchi all'interno dell'oggetto:
- registrato
- coda
- fatto
- to_do
Quandoper laprima volta registri uno script con
wp_register_scripts()
vieneinseritonell'elenco dei registrati. Quandowp_enqueue_script()
lo script,viene copiatonell'elenco delle code. Dopo che è stato stampato sullapagina,viene aggiunto all'elenco dei lavori completati.Quindi,invece di accodare lo script delpiè dipaginaper richiederejQuery,puoi documentare che deve utilizzarejQuerye controllare semplicemente a livello diprogrammazioneper assicurarti chejQuery sia caricato.
Utilizza
wp_script_is()
per controllare dove sitrova lo scriptelencato.function myscript() { if( wp_script_is( 'jquery', 'done' ) ) { ?> <script type="text/javascript"> // script dependent on jQuery </script> <?php } } add_action( 'wp_footer', 'myscript' );
potresti esserein grado di utilizzare lo stesso codiceperforzareil caricamento dijQuery anchenelpiè dipagina,manon l'hotestato ... quindiiltuo chilometraggiopuò variare.
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.
-
lo snippet di codicefornito è accettato dagli standard di sviluppo deiplugin di WordPress?Se sì,lo userònelmioplugin ...perfavore dammi una risposta su questo ...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
-
L'ultimoframmento?No. Iplugin di WordPress dovrebbero _sempre_ accodarei requisiti degli script.Forzareil caricamento dijQuery al difuori del sistema di codein questomodo è solo qualcosa che dovrestifare sultuo sito dove controlliil 100% dell'ambiente.Non èmai appropriatoper unpluginfarlo.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
-
allorapuoi darmi qualcheesempiofunzionanteper questoperfavore ...????then can u give me some working example for that please ... ????
- 0
- 2016-10-20
- laraib
-
Perché sto sviluppandoilmioprimopluginper WordPressin assolutoe mipiacerebbe chefosse accettato dalteam di WordPress ...in attesa di unatua risposta,perfavore ... dì latua su questoin modo cheiopossa crearee accettareilmioplugin...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
Apartire da wordpress 4.5puoi aggiungere scriptinline da
wp_add_inline_script()
.Per aggiungere uno snippetjavascript alpiè dipagina che richiedejQuery,questo codiceti aiutafunction 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
Utilizza l'azione
wp_footer
in questomodo: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 }
-
Questanon è unabuona risposta.Ho chiesto comepotevo specificare lo script richiestojQuery.Se l'utentenon hajqueryin esecuzione,l'implementazionenon verràeseguita.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
So che OP desidera specificare un requisito sujQuerye gli autori di WordPress avrebbero dovuto consentire chegli snippet venissero accodati accanto aifile di script,manon l'hannofatto,quindi consiglio dinonprovare aforzareesso.Senon vuoi assolutamente rovinare la coda oil suo ordine,comeme (perché sto usando altriplugin che combinanoe ottimizzanogli script),la risposta è davvero usare
wp_footer
azionein questomodo:<?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 );
-
-
Lo so,ma comepuoi specificare che lo script che aggiungi alpiè dipagina dipende dajquery.Controlla lamiamodificaperesserepiù specifica.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
-
Tiprendipersino labriga di leggereil codiceprima di votare le risposte dellepersone?Haimai letto dell'argomento `in_footer` di` wp_enqueue_script`?Leggi questo: http://codex.wordpress.org/Function_Reference/wp_enqueue_script.Ti dice come usarlo con l'azione `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
-
So dipoter aggiungere unfile di script alpiè dipagina di wordpress che richiedejquery utilizzando questo codice:
Ma cosa succede se voglio aggiungere solo unnormaleframmento dijqueryinline,non unfile. Come èpossibilefarlo.
Modifica
So dipoter usare questo scriptper aggiungere qualcosa alpiè dipagina:
Ma comefaccio a specificare lo script utilizzato richiede l'esecuzione dijquery .