WooCommerce is absolutely the most brilliant and easy-to-use shopping cart for WordPress – but it’s heavy! I’ll show you how to remove the cruft!
Option 1: Use a filter
There are a couple of ways to do this. The easiest is to remove the three primary stylesheets using a simple filter in functions.php
add_filter( 'woocommerce_enqueue_styles', '__return_empty_array' );
Option 2: A bit more control
If you want fine grain control over what appears where, then this function uses a conditional tag to dequeue styles and scripts.
/** * Manage WooCommerce styles and scripts. */
function grd_woocommerce_script_cleaner() { // Remove the generator tag remove_action( 'wp_head', array( $GLOBALS['woocommerce'], 'generator' ) ); // Unless we're in the store, remove all the cruft! if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) { wp_dequeue_style( 'woocommerce_frontend_styles' ); wp_dequeue_style( 'woocommerce-general'); wp_dequeue_style( 'woocommerce-layout' ); wp_dequeue_style( 'woocommerce-smallscreen' ); wp_dequeue_style( 'woocommerce_fancybox_styles' ); wp_dequeue_style( 'woocommerce_chosen_styles' ); wp_dequeue_style( 'woocommerce_prettyPhoto_css' ); wp_dequeue_script( 'selectWoo' ); wp_deregister_script( 'selectWoo' ); wp_dequeue_script( 'wc-add-payment-method' ); wp_dequeue_script( 'wc-lost-password' ); wp_dequeue_script( 'wc_price_slider' ); wp_dequeue_script( 'wc-single-product' ); wp_dequeue_script( 'wc-add-to-cart' ); wp_dequeue_script( 'wc-cart-fragments' ); wp_dequeue_script( 'wc-credit-card-form' ); wp_dequeue_script( 'wc-checkout' ); wp_dequeue_script( 'wc-add-to-cart-variation' ); wp_dequeue_script( 'wc-single-product' ); wp_dequeue_script( 'wc-cart' ); wp_dequeue_script( 'wc-chosen' ); wp_dequeue_script( 'woocommerce' ); wp_dequeue_script( 'prettyPhoto' ); wp_dequeue_script( 'prettyPhoto-init' ); wp_dequeue_script( 'jquery-blockui' ); wp_dequeue_script( 'jquery-placeholder' ); wp_dequeue_script( 'jquery-payment' ); wp_dequeue_script( 'fancybox' ); wp_dequeue_script( 'jqueryui' ); }
}
add_action( 'wp_enqueue_scripts', 'grd_woocommerce_script_cleaner', 99 );
Option 3: Nuke it
Kill all the things, forever. You’ll write your own styles, because you’re a fucking ninja.
/** * Remove all WooCommerce scripts and styles! Forever! */
function grd_remove_woocommerce_styles_scripts() { remove_action( 'wp_head', array( $GLOBALS['woocommerce'], 'generator' ) ); remove_action( 'wp_enqueue_scripts', array( $GLOBALS['woocommerce'], 'frontend_scripts' ) );
}
define( 'WOOCOMMERCE_USE_CSS', false );
add_action( 'init', 'grd_remove_woocommerce_styles_scripts', 99 );
Further reading:
WooCommerce has a page dedicated for style & script management. Also, take a look at the PHP Class responsible for enqueuing styles and scripts.
Thanks to everyone who’s suggested things in the comments. Peer code-review is amazing, and it’s why I share this stuff.
Comments
solosails
Greg Rickaby
Philipp
Jeff
solosails
Chirag VoraChirag
Jessica Read
adam mclane
Jason Bradley
ftntravis
Phil
Corey Light
Morgan Feeney
Tom
Hugo dice...
Miryam Flores (@miryamfv)
Andres
Anwar
Chris
Greg Rickaby
indextwo
Greg Rickaby