Обновление кэшированных методов доставки при оформлении заказа. Обновление события ajax в Woocommerce. - PullRequest
0 голосов
/ 05 ноября 2018

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

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

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 Ответ

0 голосов
/ 05 ноября 2018

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

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

...