Обновление кэшированных методов доставки при оформлении заказа. Обновление события 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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector