Dans mon plugin, je veux tester si jQuery ou Prototype (ou les deux) vont être chargés par un autre plugin. Donc, avez wp_enqueue_script('jquery')
ou wp_enqueue_script('prototype')
déjà été appelé.
J'ai le code approprié à mon plugin dans les fichiers plugin.prototype.js
et plugin.jquery.js
et si Prototype est en file d'attente, mon plugin utilisera plugin.prototype.js
. De cette façon, j'évite de charger plus que nécessaire sur le site. Si aucun des deux n'a chargé, je ferai la queue selon le plus petit.
Comment puis-je tester pour voir ce qui a été mis en file d'attente? Comment puis-je m'assurer que mon code fonctionne en dernier?
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');
Pour vous assurer que votre code est exécuté après le chargement de jQuery ou de Prototype, utilisez le paramètre $deps
pour wp_enqueue_script
, puis transmettez array('jquery')
ou array('prototype')
. Si vous voulez savoir si un script est dans la file d'attente, vous pouvez utiliser la méthode query()
de WP_Dependencies
( qui est la superclasse de WP_Scripts
). Donc, quelque chose comme ça devrait marcher:
global $wp_scripts;
$jQueryIsLoaded = (bool) $wp_scripts->query('jquery');
$prototypeIsLoaded = (bool) $wp_scripts->query('prototype');
Bien sûr, les plugins peuvent les mettre en file d'attente une fois que vous en avez décidé un, alors essayez de vous assurer d'exécuter cette vérification au dernier moment possible.