Question

How can I get all enqueued styles or scripts and then deregister them all at once?

Was it helpful?

Solution

I hope you know what you are doing. You can use the wp_print_styles and wp_print_scripts action hooks and then get the global $wp_styles and $wp_scripts object variables in their respective hooks.

The "registered" attribute lists registered scripts and the "queue" attribute lists enqueued scripts on both of the above objects.

An example code to empty the scripts and style queue.

function pm_remove_all_scripts() {
    global $wp_scripts;
    $wp_scripts->queue = array();
}
add_action('wp_print_scripts', 'pm_remove_all_scripts', 100);

function pm_remove_all_styles() {
    global $wp_styles;
    $wp_styles->queue = array();
}
add_action('wp_print_styles', 'pm_remove_all_styles', 100);

OTHER TIPS

You can also do it on a per basis by finding the handlers being called upon, search for wp_enqueue_style or wp_enqueue_script you can deregister them like this on your functions.php

add_action( 'wp_print_styles', 'my_deregister_styles', 100 );

function my_deregister_styles() {
    wp_deregister_style( 'some-css' );
}


add_action( 'wp_print_scripts', 'my_deregister_javascript', 100 );

function my_deregister_javascript() {
    wp_deregister_script( 'tutorials-js' );
    wp_deregister_script( 'gsc_dialog' );
    wp_deregister_script( 'gsc_jquery' );
}

Hameedullah solution is better, however if you run into problems due to some scripts not loading give the above a shot.

Hello you can also remove all these script, and wordpress will work correctly. Since Wordpress lets you remove all the script, and the ones he needs can not be removed. The audio script and others are script extras, so this will not cause problems in your wordpress.

/**
 * Dequeue the Parent Theme scripts or plugin.
 *
 * Hooked to the wp_print_scripts action, with a late priority (100),
 * so that it is after the script was enqueued.
 */
function my_site_WI_dequeue_script() {
 wp_dequeue_script( 'comment-reply' ); //If you're using disqus, etc.
 wp_dequeue_script( 'jquery_ui' ); //jQuery UI, no thanks!
 wp_dequeue_script( 'fancybox' ); //Nah, I use FooBox
 wp_dequeue_script( 'wait_for_images' );
 wp_dequeue_script( 'jquery_easing' );
 wp_dequeue_script( 'swipe' );
 wp_dequeue_script( 'waypoints' );
}

add_action( 'wp_print_scripts', 'my_site_WI_dequeue_script', 99 );

Hameedullah's method is useful, however if you only want this to work in the front end of the site (eg:not your WordPress dashboard) you need to add a conditional to force it to bail early.

I'm using a check mentioned in this question along with is_admin() to do this.

function pm_remove_all_scripts(){
  if(in_array($GLOBALS['pagenow'], ['wp-login.php', 'wp-register.php']) || is_admin()) return; //Bail early if we're
  global $wp_scripts;
  $wp_scripts->queue = array();
}

add_action('wp_print_scripts', 'pm_remove_all_scripts', 100);

function pm_remove_all_styles(){
  if(in_array($GLOBALS['pagenow'], ['wp-login.php', 'wp-register.php']) || is_admin()) return; //Bail early if we're

  global $wp_styles;
  $wp_styles->queue = array();
}

add_action('wp_print_styles', 'pm_remove_all_styles', 100);
Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top