Проверьте, не помещен ли jQuery или прототип в очередь другим плагином?
В моем плагине я хочу проверить, будет ли jQuery или прототип (или оба) загружены другим плагином. Итак, у wp_enqueue_script('jquery')
или wp_enqueue_script('prototype')
уже был вызван.
У меня есть код, соответствующий моему плагину в файлах plugin.prototype.js
и plugin.jquery.js
, и если прототип поставлен в очередь, мой плагин будет использовать plugin.prototype.js
. Таким образом, я избегаю загрузки на сайт больше, чем необходимо. Если ни один из них не загрузился, я поставлю в очередь тот, который меньше.
Как я могу проверить, чтобы увидеть, что было встали в очередь? Как мне убедиться, что мой код выполняется последним?
2 answers
Используйте wp_script_is()
, чтобы проверить, находится ли скрипт в очереди.
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');
Чтобы убедиться, что ваш код запускается после загрузки jQuery или прототипа, используйте параметр $deps
для wp_enqueue_script
и передайте либо array('jquery')
, либо array('prototype')
. Если вы хотите узнать, находится ли скрипт в очереди, вы можете использовать метод query()
WP_Dependencies
( который является суперклассом WP_Scripts
). Так что что-то вроде этого должно сработать:
global $wp_scripts;
$jQueryIsLoaded = (bool) $wp_scripts->query('jquery');
$prototypeIsLoaded = (bool) $wp_scripts->query('prototype');
Конечно, плагины могут ставить их в очередь после того, как вы выбрали один из них, поэтому постарайтесь выполнить эту проверку в последний возможный момент.