Измените способ доставки по умолчанию в Woocommerce

У меня есть два способа доставки. Во-первых, это бесплатная доставка, а во-вторых, фиксированная ставка для экспресс-доставки, за которую я беру дополнительную плату. По умолчанию в корзине выбрана экспресс-доставка, что приводит некоторых покупателей в замешательство, поскольку я не предлагаю бесплатную доставку.

Можно ли изменить метод, выбранный по умолчанию, на бесплатную доставку?


person Mayank Gupta    schedule 26.11.2018    source источник


Ответы (2)


Я думаю, вам просто нужно изменить порядок способов доставки для каждой зоны доставки, переместив бесплатную доставку в первую строку.

Если это не сработает, вы можете добавить следующий код:

add_action( 'woocommerce_before_cart', 'auto_select_free_shipping_by_default' );
function auto_select_free_shipping_by_default() {
    if ( isset(WC()->session) && ! 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 в коде.

person LoicTheAztec    schedule 26.11.2018
comment
Замечательный код, еще раз спасибо, Лоик, ваш код помог мне в совершенно другом контексте, и это не в первый раз. - person Marco Floriano; 15.06.2020

функция test_default_shipping_method ($ default, $ available) {$ default_method = 'wcv_pro_vendor_shipping'; // укажите здесь имя службы, которая будет выбрана по умолчанию if (array_key_exists ($ method, $ available_methods)) return $ default_method; иначе вернуть $ default_method; }

person Pratham    schedule 03.04.2019