Обновление кэшированных методов доставки при оформлении заказа. Обновление события ajax в Woocommerce.

Я только что реализовал заказное решение по доставке.

Это зависит от общей стоимости товаров в корзине. Например:

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

Но у меня есть проблема с кешем woocommerce... Я думаю, дело в том, что woocommerce кеширует тарифы доставки, не принимая во внимание изменение количества заказа. Так проблема в методе Calculate_shipping_for_package()?

Если я включаю режим отладки доставки, все работает как надо, без обновлений.

Я пытался отключить кэш, но безуспешно.

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);

Так. У вас когда-нибудь были такие проблемы? Как ты решил? Большое спасибо за любую помощь!

1 ответ

Решение

Обновлено: в вашем коде есть ошибки, попробуйте следующее:

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
    }
}

Код помещается в файл function.php вашей активной дочерней темы (active theme). Проверено и работает.

Но он будет обновлять кэш методов доставки каждый раз при обновлении ajax checkout.

Похожие страницы: Пользовательское поле оформления заказа и способы доставки ajax-взаимодействие в Woocommerce 3

Другие вопросы по тегам