Сбросить ранее выбранный способ доставки на странице оформления заказа в Woocommerce - PullRequest
1 голос
/ 21 марта 2019

В настоящее время я очищаю метод выбора доставки по умолчанию, используя этот фильтр:

add_filter( 'woocommerce_shipping_chosen_method', '__return_false', 99);

Однако, это очищает его только во время начального сеанса клиента. Как только клиент выбирает вариант хотя бы один раз, он запоминает выбор на будущее.

Я пытаюсь оформить заказ, чтобы клиент выбирал вариант доставки каждый раз, когда он посещает заказ, даже в том же сеансе. Можно ли запускать этот фильтр каждый раз, когда загружается страница оформления заказа?

1 Ответ

0 голосов
/ 21 марта 2019

Вы можете сбросить последний выбранный способ доставки, используя на странице оформления заказа (для зарегистрированных клиентов):

 delete_user_meta( get_current_user_id(), 'shipping_method' );

, а также удалить выбранный способ доставки из данных сеанса:

WC()->session->__unset( 'chosen_shipping_methods' );

В подключенной функции, такой как:

add_action( 'template_redirect', 'reset_previous_chosen_shipping_method' );
function reset_previous_chosen_shipping_method() {
    if( is_checkout() && ! is_wc_endpoint_url() && is_user_logged_in() 
    && get_user_meta( get_current_user_id(), 'shipping_method', true ) ) {
        delete_user_meta( get_current_user_id(), 'shipping_method' );
        WC()->session->__unset( 'chosen_shipping_methods' );
    }
}

Или вы также можете установить способ доставки по умолчанию для всех на странице оформления заказа:

add_action( 'template_redirect', 'reset_previous_chosen_shipping_method' );
function reset_previous_chosen_shipping_method() {
    if( is_checkout() && ! is_wc_endpoint_url() && is_user_logged_in() ) {
        WC()->session->set( 'chosen_shipping_methods', array('flat_rate:14') );
    }
}

Чтобы узнать скорость доставкиИдентификаторы, которые вы можете использовать, вы можете проверить переключатели метода доставки на корзине или на страницах оформления заказа, с помощью инспектора вашего браузера, например:

enter image description here

Код работаетФайл .php вашей активной дочерней темы (или активной темы).Должно работать.

...