Тест, чтобы увидеть, если jQuery или прототип очереди в очереди другим плагином?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/206

Вопрос

В моем плагине я хочу проверить, чтобы увидеть, будут ли 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');

Конечно, плагины могут включить их после того, как вы решили один, поэтому постарайтесь убедиться, что вы выполнили этот чек в последний момент.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top