Created
September 8, 2016 06:13
-
-
Save neamtua/bfdc4521f5a1582f5ad169646f42fcdf to your computer and use it in GitHub Desktop.
WooCommerce: Update shipping costs on checkout using ajax
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script type="text/javascript"> | |
/* in order to update info on your checkout page you need to trigger update_checkout function | |
so add this in your javascript file for your theme or plugin | |
*/ | |
jQuery('body').trigger('update_checkout'); | |
/* what this does is update the order review table but what it doesn't do is update shipping costs; | |
the calculate_shipping function of your shipping class will not be called again; | |
so if you were like me and you made a shipping method plugin and you had to change costs based on payment method then | |
this is the only way to ensure it does just that | |
*/ | |
</script> | |
<?php | |
# add this in your plugin file and that's it, the calculate_shipping method of your shipping plugin class will be called again | |
function action_woocommerce_checkout_update_order_review($array, $int) | |
{ | |
WC()->cart->calculate_shipping(); | |
return; | |
} | |
add_action('woocommerce_checkout_update_order_review', 'action_woocommerce_checkout_update_order_review', 10, 2); | |
?> |
Thanks! This code jQuery('body').trigger('update_checkout');
saved me the time of research 😃
That is not working. In source woocommerce mention to this docs
https://gist.github.com/woogists/271654709e1d27648546e83253c1a813
Put this code to functions.php to solve this
function wc_shipping_rate_cache_invalidation( $packages ) {
foreach ( $packages as &$package ) {
$package['rate_cache'] = wp_rand();
}
return $packages;
}
add_filter( 'woocommerce_cart_shipping_packages', 'wc_shipping_rate_cache_invalidation', 100 );
Thanks @PhongGCS, it really works.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
If I instead wish to invoke my custom shipping method to recalculate shipping costs, how do I do that please?