it-swarm-eu.dev

Otestujte, zda je jQuery nebo Prototype zařazen do fronty jiným pluginem?

V mém plugin, chci otestovat, zda jQuery nebo Prototype (nebo obojí) budou načteny jiným pluginem. Takže, wp_enqueue_script('jquery') nebo wp_enqueue_script('prototype') již bylo povoláno.

Mám kód vhodný pro můj plugin v souborech plugin.prototype.js a plugin.jquery.js a pokud je Prototyp zařazen do fronty, můj plugin bude používat plugin.prototype.js. Tímto způsobem se vyhnuu načítání více, než je nutné do webu. Pokud ani jeden z nich není načten, zařadí se do fronty podle toho, která hodnota je menší.

Jak mohu otestovat, zda se ve frontě objevilo? Jak se ujistím, že můj kód běží naposledy?

5
artlung

Pomocí wp_script_is() zkontrolujte, zda je skript ve frontě.

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');
11
Annika Backstrom

Abyste se ujistili, že váš kód běží po načtení jQuery nebo Prototype, použijte parametr $deps na wp_enqueue_script a předejte buď array('jquery') nebo array('prototype'). Pokud chcete vědět, zda je skript ve frontě, můžete použít metodu query()WP_Dependencies ( , což je nadtřída WP_Scripts ). Takže něco takového by mělo fungovat:

global $wp_scripts;
$jQueryIsLoaded = (bool) $wp_scripts->query('jquery');
$prototypeIsLoaded = (bool) $wp_scripts->query('prototype');

Samozřejmě, pluginy by je mohly zapracovat až poté, co se rozhodnete na jednom, takže se snažte zajistit, abyste tuto kontrolu provedli v poslední možné chvíli.

2
Jan Fabry