Тест, чтобы увидеть, если jQuery или прототип очереди в очереди другим плагином?
-
16-10-2019 - |
Вопрос
В моем плагине я хочу проверить, чтобы увидеть, будут ли JQuery или прототип (или оба) загружаться другим плагином. Итак, есть wp_enqueue_script('jquery')
или же wp_enqueue_script('prototype')
уже был вызван.
У меня есть код, подходящий для моего плагина в файлах plugin.prototype.js
а также plugin.jquery.js
И если прототип будет в очереди, мой плагин будет использовать plugin.prototype.js
. Анкет Таким образом, я избегаю загрузки больше, чем необходимо на сайт. Если ни один из них не загрузился, я буду стоять в очереди, что меньше.
Как я могу проверить, чтобы увидеть, что было в очереди? Как мне убедиться, что мой код запускается в последний раз?
Решение
Использовать 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');
Конечно, плагины могут включить их после того, как вы решили один, поэтому постарайтесь убедиться, что вы выполнили этот чек в последний момент.