https://gelwp.com/articles/removing-all-enqueued-and-default-css-scripts-in-wordpress/ has code that removes all the enqueued styles including those that may be coming from other plugins besides the ones from the active theme.

Is it possible to remove all enqueued assets from only the current active theme without hardcoding the theme name or when it is not known which theme is active?

i.e., achieve the result of

remove_action( 'wp_enqueue_scripts', 'twentynineteen_scripts' );

when twentynineteen theme is active


remove_action( 'wp_enqueue_scripts', 'twentytwenty_register_styles' );
remove_action( 'wp_enqueue_scripts', 'twentytwenty_register_scripts' );

when twentytwenty is active.

  • WordPress doesn’t know whether scripts or styles were enqueue by a theme or plugin. You can’t even rely on the URL, because themes could enqueue external assets. What’s your ultimate goal here? If it’s a child theme, the just check the parent theme manually to find all the asset handles. Nov 14, 2019 at 7:10

1 Answer 1


Here you go. I took this out of my mailoptin plugin. Adapt the code to your use case.

add_action('wp_enqueue_scripts', function () use ($wp_get_theme) {
                global $wp_styles;
                global $wp_scripts;

            $wp_get_theme = wp_get_theme();

                $child_theme  = $wp_get_theme->get_stylesheet();
                $parent_theme = $wp_get_theme->get_template();

                foreach ($wp_scripts->registered as $key => $value) {
                    $src = $value->src;
                    if (strpos($src, "themes/$child_theme/") !== false || strpos($src, "themes/$parent_theme/") !== false) {

                    if (strpos($src, "/uploads/$child_theme/") !== false || strpos($src, "/uploads/$parent_theme/") !== false) {


            }, 20);

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.