Skip to content

Instantly share code, notes, and snippets.

@mharis
Forked from khromov/cart-cache-breaker.php
Last active August 29, 2015 14:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mharis/8555367b1be5c2247a44 to your computer and use it in GitHub Desktop.
Save mharis/8555367b1be5c2247a44 to your computer and use it in GitHub Desktop.
/** Break html5 cart caching */
add_action('wp_enqueue_scripts', 'cartcache_enqueue_scripts', 100);
function cartcache_enqueue_scripts()
{
wp_deregister_script('wc-cart-fragments');
wp_enqueue_script( 'wc-cart-fragments', get_template_directory_uri() . '/cart-fragments.js', array( 'jquery', 'jquery-cookie' ), '1.0', true );
}
/** Modified cart-fragments.js script to break HTML5 fragment caching. Useful with WPML when switching languages **/
jQuery(document).ready(function($) {
/** Cart Handling */
$supports_html5_storage = ( 'sessionStorage' in window && window['sessionStorage'] !== null );
$fragment_refresh = {
url: woocommerce_params.ajax_url,
type: 'POST',
data: { action: 'woocommerce_get_refreshed_fragments' },
success: function( data ) {
if ( data && data.fragments ) {
$.each( data.fragments, function( key, value ) {
$(key).replaceWith(value);
});
if ( $supports_html5_storage ) {
sessionStorage.setItem( "wc_fragments", JSON.stringify( data.fragments ) );
sessionStorage.setItem( "wc_cart_hash", data.cart_hash );
}
$('body').trigger( 'wc_fragments_refreshed' );
}
}
};
//Always perform fragment refresh
$.ajax( $fragment_refresh );
/* Cart hiding */
if ( $.cookie( "woocommerce_items_in_cart" ) > 0 )
$('.hide_cart_widget_if_empty').closest('.widget_shopping_cart').show();
else
$('.hide_cart_widget_if_empty').closest('.widget_shopping_cart').hide();
$('body').bind( 'adding_to_cart', function() {
$('.hide_cart_widget_if_empty').closest('.widget_shopping_cart').show();
} );
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment