¿Cómo obtengo el $ handle para todos los scripts en cola?

18

¿Hay alguna forma de obtener el $ handle para cada script que se ha puesto en cola?

¿Hay alguna matriz que contenga todos los identificadores para que pueda recorrerla y hacer algo con cada identificador $?

trusktr
fuente

Respuestas:

25

el $wp_scriptsglobal contiene todos los datos del script:

function wpa54064_inspect_scripts() {
    global $wp_scripts;
    foreach( $wp_scripts->queue as $handle ) :
        echo $handle;
    endforeach;
}
add_action( 'wp_print_scripts', 'wpa54064_inspect_scripts' );
Milo
fuente
55
A partir de WP 4.2.0, $wp_scripts = wp_scripts();podría ser mejor que acceder al global directamente, ya que se inicializará $wp_scriptssi no se ha configurado.
jgraup
Debería agregar prioridad ,9999como add_action( 'wp_print_scripts', wpa54064_inspect_scripts', 9999 );, de lo contrario, verá secuencias de comandos que están eliminadas por el archivo functions.php
Ryszard Jędraszyk
2

¿Hay alguna forma de obtener el $ handle para cada script que se ha puesto en cola?

Puede intentar inspeccionar $wp_scripts->queueun gancho específico, pero no le dará una lista de todos los controladores utilizados por WordPress, lo creas o no.

Por ejemplo, podría conectarse wp_head, que ejecuta la wp_print_scriptsacción, para obtener una lista del $handlestema Twenty Seventeen de stock en WP v4.7.5:

function get_enqueued_scripts () {
    $scripts = wp_scripts();
    var_dump( array_keys( $scripts->groups ) );
}

add_action( 'wp_head', 'get_enqueued_scripts' );

Y la lista de $handlesfrom $wp_scripts->groupsdará salida:

ingrese la descripción de la imagen aquí

En este punto, si comparara lo que existe en $wp_scripts->queueél, solo verá un subconjunto de lo anterior.

Por lo tanto, incluso wp_print_scripts no proporcionará una lista completa de identificadores como se muestra arriba, si eso es lo que busca. Y tampoco es posible confiar siempre en dependencias agrupadas para obtenerlas.

Josh Habdas
fuente