-
-
Save DevinWalker/7621777 to your computer and use it in GitHub Desktop.
/** | |
* Optimize WooCommerce Scripts | |
* Remove WooCommerce Generator tag, styles, and scripts from non WooCommerce pages. | |
*/ | |
add_action( 'wp_enqueue_scripts', 'child_manage_woocommerce_styles', 99 ); | |
function child_manage_woocommerce_styles() { | |
//remove generator meta tag | |
remove_action( 'wp_head', array( $GLOBALS['woocommerce'], 'generator' ) ); | |
//first check that woo exists to prevent fatal errors | |
if ( function_exists( 'is_woocommerce' ) ) { | |
//dequeue scripts and styles | |
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) { | |
wp_dequeue_style( 'woocommerce_frontend_styles' ); | |
wp_dequeue_style( 'woocommerce_fancybox_styles' ); | |
wp_dequeue_style( 'woocommerce_chosen_styles' ); | |
wp_dequeue_style( 'woocommerce_prettyPhoto_css' ); | |
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-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( 'fancybox' ); | |
wp_dequeue_script( 'jqueryui' ); | |
} | |
} | |
} |
Big props to @jaswrks, you saved me from rooting through api documentation. All scripts 100% gone, 3 lines of code.
remove_action('wp_enqueue_scripts', [WC_Frontend_Scripts::class, 'load_scripts']);
remove_action('wp_print_scripts', [WC_Frontend_Scripts::class, 'localize_printed_scripts'], 5);
remove_action('wp_print_footer_scripts', [WC_Frontend_Scripts::class, 'localize_printed_scripts'], 5);
Oh god! that was dificult! Thanks @alenabdula . Your code inside functions.php works perfectly ;)
@RiFi2k
This action not work, my site will display Photoswipe button
It's not working anymore. Any tips?
@DevinWalker @jaswrks @Basilou38
Im wondering how y'all manage to replace all those built in WC scripts (and any plugins) with custom code tho?
Dev-Time wise seems a bit harsh.. The cart updating, the order generation from checkout, all the store notices, messages and most importantly form fields -> form submission seem to be heavily depend on those scripts.. Just wondering, any tips here r highly appreciated if there's some nice workflow or "shortcuts"
P.S: Still relevant today.
You could also do (functions.php)
add_filter('woocommerce_enqueue_styles', '__return_empty_array');
for CSS in 1 line pretty much.. it's in the Theming Docs.
Side Note:
This still seems to work for me with all latest versions of WP & WC...
Don't forget to add it inside a function, and then add_action to invoke it...
IF you are using latest version of Woo, you need to add these three lines to remove ALL styles
wp_dequeue_style( 'woocommerce-general' ); wp_dequeue_style( 'woocommerce-layout' ); wp_dequeue_style( 'woocommerce-smallscreen' );
function gist_rm_wc_scripts() {
if (function_exists('is_woocommerce') {
# wp_dequeue above here
}
}
add_action('wp_enqueue_scripts', 'gist_rm_wc_scripts');
Hey guys, I have disable WooCommerce styles and scripts sitewide as I need good performance and it was killing my site performance. I have an issue now where the login form and other account forms have no styling. How can I target the account pages of members so that it displays the styling only for any user account related pages?
Wrote an article having comprehensive code for this.
https://wpdevdesign.com/how-to-remove-woocommerce-css-js-from-non-woocommerce-pages/
Good info - any pointers on how to modify the above code so that the woocommerce geolocation functionality doesn't get called for a given page? We need this on our site's store pages, but it's extremely slow and so we'd of course like to avoid calling it on all of the non-store pages.
For clarity, I'm talking about the "geolocate with page caching support", that results in URLs with parameters like ?v=11aedd0e4327 appended.
Thanks in advance for your help!