Test per vedere se jQuery o Prototype è in coda da un altro plug-in?
-
16-10-2019 - |
Domanda
Nel mio plug-in, voglio test per vedere se jQuery o Prototype (o entrambi) stanno per essere caricato da un altro plugin. Così, hanno wp_enqueue_script('jquery')
o wp_enqueue_script('prototype')
è già stato chiamato.
Ho codice appropriato per il mio plug-in file plugin.prototype.js
e plugin.jquery.js
e se Prototype è in coda, il mio plugin utilizzare plugin.prototype.js
. In questo modo ho evitare di caricare più del necessario nel sito. Se nessuno dei due è stato caricato, io in coda a seconda di quale è più piccolo.
Come posso provare a vedere quello che è stato in coda? Come posso essere sicuro il mio codice viene eseguito ultima?
Soluzione
Usa wp_script_is()
per controllare se uno script è nella coda.
function add_my_scripts() {
$doing_jquery = wp_script_is('jquery', 'queue');
$doing_prototype = wp_script_is('prototype', 'queue');
var_dump($doing_jquery, $doing_prototype);
}
add_action('wp_print_scripts', 'add_my_scripts');
Altri suggerimenti
Per assicurarsi che le corse codice dopo jQuery o Prototype viene caricato, utilizzare il parametro $deps
a wp_enqueue_script
, e superare sia array('jquery')
o array('prototype')
. Se volete sapere se uno script è in coda, è possibile utilizzare il metodo query()
di WP_Dependencies
(, che è la superclasse di WP_Scripts
). Quindi, qualcosa come questo dovrebbe funzionare:
global $wp_scripts;
$jQueryIsLoaded = (bool) $wp_scripts->query('jquery');
$prototypeIsLoaded = (bool) $wp_scripts->query('prototype');
Naturalmente, i plugin potrebbe accodare loro dopo aver deciso su uno, quindi cercate di fare in modo che si esegue questo controllo all'ultimo momento possibile.