it-swarm-es.com

¿Probar para ver si jQuery o Prototype está en cola por otro complemento?

En mi complemento, quiero probar si jQuery o Prototype (o ambos) serán cargados por otro complemento. Por lo tanto, tener wp_enqueue_script('jquery') o wp_enqueue_script('prototype') ya se ha llamado.

Tengo el código apropiado para mi complemento en los archivos plugin.prototype.js y plugin.jquery.js y si Prototype está en cola, mi complemento utilizará plugin.prototype.js. De esta manera evito cargar más de lo necesario en el sitio. Si ninguno de los dos se ha cargado, haré cola cualquiera que sea más pequeña.

¿Cómo puedo probar para ver qué se ha puesto en cola? ¿Cómo me aseguro de que mi código se ejecute por última vez?

5
artlung

Use wp_script_is() para verificar si un script está en la cola.

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 asegurarse de que su código se ejecuta después de cargar jQuery o Prototype, use el parámetro $deps para wp_enqueue_script, y pase array('jquery') o array('prototype'). Si desea saber si un script está en la cola, puede usar el método query() de WP_Dependencies ( el cual es la superclase de WP_Scripts ). Así que algo como esto debería funcionar:

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

Por supuesto, los complementos pueden ponerlos en cola después de que se decida por uno, así que asegúrese de ejecutar esta comprobación en el último momento posible.

2
Jan Fabry