5

i just implemented a custom shipping solution.

It depends on the total price of items in the cart. For example:

if total is < 20   -> display free shipping
if total is >= 20  -> paid delivery

But i have a problem with woocommerce cache...I think that the fact is that woocommerce caches shipping rates, not taking in account order qty change. So is the problem is with the calculate_shipping_for_package() method?

If I enable shipping debug mode everything works just right, without it got no updates.

I tried to disable cache, without success with.

add_action('woocommerce_checkout_update_order_review', function() {
    $packages = WC()->cart->get_shipping_packages();
    foreach ($packages as $key => $value) {
        $shipping_session = "shipping_for_package_$key";
        unset(WC()->session->$shipping_session);
    }
}, 10, 2);

So. Do you ever had this kind of problem? How did you solve? Thanks a lot for any help!

LoicTheAztec
  • 229,944
  • 23
  • 356
  • 399
KeySee
  • 760
  • 1
  • 12
  • 26
  • Difficult to answer to this question with the few provided code. We don't know how your shipping method customizations are done and what it's involved in it. So you should need to provide all related code as with the provided code, it's not testable. – LoicTheAztec Nov 05 '18 at 10:41

1 Answers1

10

Updated: There is some mistakes in your code, instead try the following:

add_action('woocommerce_checkout_update_order_review', 'checkout_update_refresh_shipping_methods', 10, 1);
function checkout_update_refresh_shipping_methods( $post_data ) {
    $packages = WC()->cart->get_shipping_packages();
    foreach ($packages as $package_key => $package ) {
         WC()->session->set( 'shipping_for_package_' . $package_key, false ); // Or true
    }
}

Code goes in function.php file of your active child theme (active theme). Tested and works.

But it will refresh shipping methods cache each time on ajax checkout update event.

Related: Custom checkout field and shipping methods ajax interaction in Woocommerce 3

LoicTheAztec
  • 229,944
  • 23
  • 356
  • 399