How can I get a list of all enqueued scripts and styles?

do_action doesn’t quite work like that. When you call do_action('crunchify_print_scripts_styles') WP looks at its list of registered actions and filters for any that are attached to a hook called crunchify_print_scripts_styles and then runs those functions.

And you probably want to remove this:

add_action( 'wp_enqueue_scripts', 'crunchify_print_scripts_styles');

… because you aren’t able to get the return result of your function.

Also when you use this particular hook you can’t guarantee that other functions don’t enqueue more scripts or styles after you’ve generated your list. Use a hook that fires after all scripts and styles have been enqueued, such as wp_head, for convenience, or better still just call your function within your theme when you want to display the result.

Reworking your code like this should work…

function crunchify_print_scripts_styles() {

    $result = [];
    $result['scripts'] = [];
    $result['styles'] = [];

    // Print all loaded Scripts
    global $wp_scripts;
    foreach( $wp_scripts->queue as $script ) :
       $result['scripts'][] =  $wp_scripts->registered[$script]->src . ";";
    endforeach;

    // Print all loaded Styles (CSS)
    global $wp_styles;
    foreach( $wp_styles->queue as $style ) :
       $result['styles'][] =  $wp_styles->registered[$style]->src . ";";
    endforeach;

    return $result;
}

Then within your theme:

print_r( crunchify_print_scripts_styles() );

… will show you the results for debugging, or of course…

$all_the_scripts_and_styles = crunchify_print_scripts_styles();

… will give you the list to manipulate.

Calling it in the theme makes sure you call it after all scripts and styles are enqueued.

To call it from your plugin, attach it to any hook that runs later than wp_enqueue_scripts, like wp_head as I mentioned above:

add_action( 'wp_head', 'wpse_233142_process_list');

function wpse_233142_process_list() {

    $all_the_scripts_and_styles = crunchify_print_scripts_styles();
    // process your array here

}

Leave a Comment

error code: 523