Jak uzyskać uchwyt $ dla wszystkich kolejkowanych skryptów?

18

Czy istnieje sposób, aby uzyskać uchwyt $ dla każdego skolejkowanego kolejki?

Czy jest jakaś tablica, która zawiera wszystkie uchwyty, dzięki czemu mogę przez nią przechodzić i robić coś przy użyciu każdego uchwytu $?

trusktr
źródło

Odpowiedzi:

25

$wp_scriptsglobalny przechowuje wszystkie dane skryptów:

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
źródło
5
Począwszy od WP 4.2.0 - $wp_scripts = wp_scripts();może być lepszy niż bezpośredni dostęp do globalnego, ponieważ zainicjuje się, $wp_scriptsjeśli nie został ustawiony.
jgraup
Należy dodać priorytet ,9999jak add_action( 'wp_print_scripts', wpa54064_inspect_scripts', 9999 );, bo inaczej będziesz widząc skrypty których kolejki są opróżniane przez pliku functions.php
Ryszard Jędraszyk
2

Czy istnieje sposób, aby uzyskać uchwyt $ dla każdego skolejkowanego kolejki?

Możesz spróbować sprawdzić $wp_scripts->queuekonkretny haczyk, ale nie da ci to listy wszystkich uchwytów używanych przez WordPress, uwierz lub nie.

Na przykład możesz podłączyć się do wp_headdziałającej wp_print_scriptsakcji i uzyskać listę podstawowego $handlesmotywu Twenty Seventeen w WP v4.7.5:

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

add_action( 'wp_head', 'get_enqueued_scripts' );

A lista $handlesz $wp_scripts->groupswyświetli:

wprowadź opis zdjęcia tutaj

W tym momencie, jeśli chcesz porównać to, co istnieje $wp_scripts->queue, zobaczysz tylko podzbiór powyższego.

Dlatego nawet wp_print_scripts nie dostarczy pełnej listy uchwytów, jak pokazano powyżej, jeśli o to ci chodzi. I nie zawsze można polegać na zgrupowanych zależnościach.

Josh Habdas
źródło