Test pour voir si jQuery ou Prototype est mis en attente par un autre plug-in?
-
16-10-2019 - |
Question
Dans mon plug-in, je veux tester pour voir si jQuery ou Prototype (ou les deux) vont être chargés par un autre plug-in. Alors, avez- wp_enqueue_script('jquery')
ou wp_enqueue_script('prototype')
a déjà été appelé.
J'ai le code approprié à mon plug-in dans les fichiers plugin.prototype.js
et plugin.jquery.js
et si Prototype est mis en attente, mon plugin utiliser plugin.prototype.js
. Ce que je voie évite de charger plus que nécessaire dans le site. Si aucun chargé, je fait la queue la plus petite valeur.
Comment puis-je tester pour voir ce qui a été mis en attente jusqu'à? Comment puis-je assurer que mon code est exécuté dernier?
La solution
Utilisez wp_script_is()
pour vérifier si un script est dans la file d'attente.
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');
Autres conseils
Pour vous assurer que l'exécution de votre code après jQuery ou Prototype est chargé, utilisez le paramètre $deps
à wp_enqueue_script
et passer soit array('jquery')
ou array('prototype')
. Si vous voulez savoir si un script est dans la file d'attente, vous pouvez utiliser la méthode de query()
WP_Dependencies
( qui est la superclasse de WP_Scripts
). Donc, quelque chose comme cela devrait fonctionner:
global $wp_scripts;
$jQueryIsLoaded = (bool) $wp_scripts->query('jquery');
$prototypeIsLoaded = (bool) $wp_scripts->query('prototype');
Bien sûr, plugins pourrait les enqueue après que vous avez décidé sur un, essayez donc de vous assurer d'exécuter ce contrôle au dernier moment.