it-swarm-pt.tech

Teste para ver se jQuery ou Prototype está em fila por outro plugin?

No meu plugin, quero testar para ver se jQuery ou Prototype (ou ambos) serão carregados por outro plugin. Portanto, have wp_enqueue_script('jquery') ou wp_enqueue_script('prototype') já foi chamado.

Eu tenho código apropriado para o meu plugin nos arquivos plugin.prototype.js e plugin.jquery.js e se o Prototype estiver na fila, meu plugin usará plugin.prototype.js. Desta forma, evito carregar mais do que o necessário no site. Se nenhum dos dois tiver carregado, vou fazer fila para o que for menor.

Como posso testar para ver o que foi enfileirado? Como faço para garantir que meu código seja executado por último?

5
artlung

Use wp_script_is() para verificar se um script está na fila.

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

Para garantir que seu código seja executado após o carregamento de jQuery ou Prototype, use o parâmetro $deps para wp_enqueue_script e passe array('jquery') ou array('prototype'). Se você quiser saber se um script está na fila, você pode usar o método query() de WP_Dependencies ( que é a superclasse de WP_Scripts ). Então, algo assim deveria funcionar:

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

É claro, plugins podem enfileirá-los depois que você decide um, então tente garantir que você execute essa verificação no último momento possível.

2
Jan Fabry