Come posso ottenere $ handle per tutti gli script accodati?


18

C'è un modo per ottenere $ handle per ogni script che è stato accodato?

Esiste un array che contiene tutti gli handle in modo da poterlo scorrere e fare qualcosa usando ogni $ handle?

Risposte:


25

il $wp_scriptsglobale contiene tutti i dati dello 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' );

5
A partire da WP 4.2.0 - $wp_scripts = wp_scripts();potrebbe essere meglio che accedere direttamente al globale poiché verrà inizializzato $wp_scriptsse non è stato impostato.
jgraup,

Dovresti aggiungere una priorità ,9999come add_action( 'wp_print_scripts', wpa54064_inspect_scripts', 9999 );, altrimenti vedrai degli script che sono rimpiazzati dal file
Functions.php

2

C'è un modo per ottenere $ handle per ogni script che è stato accodato?

Potresti provare a ispezionare $wp_scripts->queueun hook specifico ma non ti darà un elenco di tutti gli handle utilizzati da WordPress, che ci crediate o no.

Ad esempio, è possibile wp_headeseguire il hook in , che esegue l' wp_print_scriptsazione, per ottenere un elenco del $handlestema Stock Twenty Seventeen in WP v4.7.5:

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

add_action( 'wp_head', 'get_enqueued_scripts' );

E l'elenco di $handlesda $wp_scripts->groupsuscirà:

inserisci qui la descrizione dell'immagine

A questo punto, se dovessi confrontare ciò che esiste in $wp_scripts->queue, vedrai solo un sottoinsieme di quanto sopra.

Pertanto, anche wp_print_scripts non fornirà un elenco completo di handle come mostrato sopra, se è quello che stai cercando. E non è possibile fare sempre affidamento su dipendenze raggruppate per ottenerle.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.