Бывает, что нужно программно убрать один или несколько способов доставки со страницы оформления заказа. Вроде ничего сложного. Ниже — небольшой кусок кода, который это делает. Туда можно добавить разнообразные условия и т.п.
1 2 3 4 5 |
add_filter( 'woocommerce_package_rates', 'remove_shipping_methods', 10, 2 ); function remove_shipping_methods( $rates, $package ) { unset( $rates['flat_rate:2'] ); return $rates; } |
Но после того, как вы добавили этот код в functions.php вашей темы, чтобы протестировать код, вам придётся очистить кэш способов доставки.
Можно сделать это вручную, зайдя в настройки способов доставки Woocommerce — нужно будет временно отключить один из способов доставки, затем включить его обратно. Но нам этот метод не подходит — кэш нужно обновить программно, без блуждания по меню админки.
Вот два способа решения этой проблемы:
1. от harisrozak
1 2 3 4 5 6 7 8 9 10 11 |
add_filter('woocommerce_checkout_update_order_review', 'clear_wc_shipping_rates_cache'); function clear_wc_shipping_rates_cache(){ $packages = WC()->cart->get_shipping_packages(); foreach ($packages as $key => $value) { $shipping_session = "shipping_for_package_$key"; unset(WC()->session->$shipping_session); } } |
2. от laurikar
1 2 3 4 |
add_action('woocommerce_checkout_update_order_review', 'clear_wc_shipping_rates_cache'); function clear_wc_shipping_rates_cache(){ WC_Cache_Helper::get_transient_version( 'shipping', true ); } |
Один ответ к “Очищаем кэш методов доставки в Woocommerce”
ygc69c