15

Is there some way to get the $handle for each script that has been enqueued?

Is there some array that holds all the handles so that I can loop through it and do something using each $handle?

22

the $wp_scripts global holds all the script data:

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
    As of WP 4.2.0 - $wp_scripts = wp_scripts(); might be better than accessing the global directly since it will initialize $wp_scripts if it has not been set. – jgraup Aug 30 '16 at 14:33
  • You should add priority ,9999 like add_action( 'wp_print_scripts', wpa54064_inspect_scripts', 9999 );, else you will be seeing scripts which are dequeued by functions.php file – Ryszard Jędraszyk Apr 6 at 14:43
1

Is there some way to get the $handle for each script that has been enqueued?

You could try inspecting $wp_scripts->queue at a specific hook but it won't give you a list of all handles used by WordPress, believe it or not.

For example, you could hook into wp_head, which runs the wp_print_scripts action, to get a list of $handles for the stock Twenty Seventeen theme 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' );

And the list of $handles from $wp_scripts->groups will output:

enter image description here

At this point, if you were to compare what exists in $wp_scripts->queue you will only see a subset of the above.

Therefore, even wp_print_scripts will not provide a full list of handles as shown above, if that's what you're after. And it's not possible to always rely on grouped dependencies to get them either.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.