В WooCommerce 3 у меня есть эти параметры доставки (настройки):
free_shipping:1
– Минимальная сумма заказа установлена в $50
. flat_rate:3
– Amount $5
. flat_rate:5
– сумма $10
. Я бы хотел, чтобы опция « Экспресс-доставка» всегда была доступна (показана).
Но когда доступна бесплатная доставка (это означает, что у клиента больше, чем 50 долларов в корзине), я хотел бы скрыть только « Обычную доставку» .
Поэтому, когда Free shipping
НЕ доступна (и скрыта), доступные тарифы доставки будут обычной доставкой и экспресс-доставкой.
Это возможно? Как я могу получить это на WooCommerce 3?
Основываясь на официальном коде кода WooCommerce , делая некоторые легкие изменения, вы сможете скрыть только свою первую фиксированную ставку, когда доступны бесплатные отгрузки:
add_filter( 'woocommerce_package_rates', 'conditionally_hide_shipping_methods', 100, 2 ); function conditionally_hide_shipping_methods( $rates, $package ) { // HERE yours 2nd flat rate "Express Shipping" (that you never hide) in the array: $flat_rates_express = array( 'flat_rate:5', 'flat_rate:12', 'flat_rate:14' ); $free = $flat2 = array(); foreach ( $rates as $rate_key => $rate ) { // Updated Here To if ( in_array( $rate->id, $flat_rates_express ) ) $flat2[ $rate_key ] = $rate; if ( 'free_shipping' === $rate->method_id ) $free[ $rate_key ] = $rate; } return ! empty( $free ) ? array_merge( $free, $flat2 ) : $rates; }
Код идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.
Протестировано на WooCommerce 3 и работает.
Обновите кеши для доставки:
1) Сначала пустую корзину.
2) Этот код уже сохранен в файле function.php.
3) Зайдите в настройки зоны доставки и отключите одну «фиксированную ставку» (например) и «сохранить». Затем снова включите эту «фиксированную скорость» и «сохранить». Вы закончили, и вы можете проверить его.