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