Изменить способ доставки по умолчанию в Woocommerce
У меня есть два способа доставки. Во-первых, это бесплатная доставка, а во-вторых, фиксированная стоимость доставки для экспресс-доставки, за которую я взимаю дополнительную плату. По умолчанию в корзине выбрана Экспресс-доставка, что приводит к путанице среди покупателей, что я не предлагаю бесплатную доставку.
Можно ли изменить выбранный по умолчанию метод на бесплатную доставку?
1 ответ
Я думаю, что вам просто нужно изменить порядок доставки для каждой зоны доставки, перенеся "бесплатную доставку" на первую строку.
Если это не работает, вы можете добавить следующий код:
add_action( 'woocommerce_before_cart', 'auto_select_free_shipping_by_default' );
function auto_select_free_shipping_by_default() {
if ( ! WC()->session->has_session() )
WC()->session->set_customer_session_cookie( true );
// Check if "free shipping" is already set
if ( strpos( WC()->session->get('chosen_shipping_methods')[0], 'free_shipping' ) !== false )
return;
// Loop through shipping methods
foreach( WC()->session->get('shipping_for_package_0')['rates'] as $key => $rate ){
if( $rate->method_id === 'free_shipping' ){
// Set "Free shipping" method
WC()->session->set( 'chosen_shipping_methods', array($rate->id) );
return;
}
}
}
Код помещается в файл function.php вашей активной дочерней темы (или активной темы). проверено и работает.
Если вы не используете страницу корзины и существует перенаправление к оформлению заказа, вам придется заменить
woocommerce_before_cart
отwoocommerce_before_checkout_form
зацепить код.
Функция test_default_shipping_method($default,$available){ $default_method = 'wcv_pro_vendor_shipping'; // укажите здесь имя службы, которая будет выбрана по умолчанию, если ( array_key_exists($method, $available_methods)) return $default_method; иначе вернуть $default_method; }