Woocommerce - Симуляция «Отправка по другому адресу» в ПРОВЕРКУ, чтобы обновить валюту заказа - PullRequest
0 голосов
/ 06 мая 2019

Информация

Версия WooCommerce: 3.6.2

Версия WordPress: 5.1.1

YITH WooCommerce Запрос ценового предложения 2.1.8

Booster Plus 4.3.1 - Модуль "Цены и валюты по странам"

Изменение количества при оформлении заказа для WooCommerce версии 1.0


Текущая ситуация

1.YITH Ручная квота, созданная в евро со страной доставки, установленной как Румыния.

  1. Клиент приземляется на кассе из Австралии.

    • Разрыв: цена мини-корзины показывает австралийский доллар. Посмотреть скриншот Mini Cart
  2. Оформление заказа обновляется с помощью , работает под кодом и показывает правильную валюту заказа - евро (но не в мини-корзине) ! Посмотреть скриншот Checkout


Цель

Получите правильную валюту заказа в Мини-корзина & Оформление заказа для цитаты, несмотря на страну посещения клиента


Обновление

После долгих поисков я ничего не нашел. Наконец я решил установить плагин Change Quantity on Checkout for WooCommerce для оформления заказа в один.

Я все еще застрял. Валюта обновляется ПОСЛЕ того, как Оформить заказ обновляется ОДИН РАЗ.


Код

Использование кода здесь Обновление данных об отправке корзины с помощью AJAX в WooCommerce Мне удалось обновить страницу оформления заказа, и валюта корректно отображается при загрузке.

add_action( 'wp_footer', 'refresh_shipping_js' );
function refresh_shipping_js() {
    // Only on checkout
    if( is_checkout() && ! is_wc_endpoint_url() ):
    ?>
    <script type="text/javascript">
    jQuery( function($){
        if (typeof wc_checkout_params === 'undefined') 
            return false;

        var refresh = 'yes';

        $.ajax({
            type: "POST",
            url: wc_checkout_params.ajax_url,
            data: ({
                'action': 'updating_shipping',
                'refresh_shipping': refresh,

            }),
            success: function(response) {
                if( response === '1' ) {
                    $(document.body).trigger('update_checkout');
                    console.log('Success: '+response); // For testing (to be removed)
                } else {
                    console.log('Failled: '+response); // For testing (to be removed)
                }
            },
            error:function(error) {
                console.log('Error: '+error); // For testing (to be removed)
            }
        });
    });
    </script>
    <?php
    endif;
}
// function that gets the Ajax data
add_action( 'wp_ajax_updating_shipping', 'updating_shipping' );
add_action( 'wp_ajax_nopriv_updating_shipping', 'updating_shipping' );
function updating_shipping() {
    if ( isset($_POST['refresh_shipping']) && $_POST['refresh_shipping'] === 'yes' ){
        WC()->session->set('refresh_shipping', '1' );
    } else {
        WC()->session->set('refresh_shipping', '0' );
    }
    echo  WC()->session->get('refresh_shipping');
    die(); // Alway at the end (to avoid server error 500)
}

// Function that refresh session shipping methods data
add_action( 'woocommerce_checkout_update_order_review', 'refresh_shipping_methods', 10, 1 );
function refresh_shipping_methods( $post_data ){
    if ( WC()->session->get('refresh_shipping' ) === '1' ) {
        foreach ( WC()->cart->get_shipping_packages() as $package_key => $package ){
            WC()->session->set( 'shipping_for_package_' . $package_key, false );
        }
        WC()->cart->calculate_shipping();
    }
}

Нужна помощь

Есть ли какой-нибудь лучший способ добиться этого?

Вся помощь будет высоко ценится

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Вот несколько плагинов, которые могут помочь здесь: https://docs.woocommerce.com/document/handle-multiple-regions-currencies-woocommerce/

Одной из его частей будет добавление нескольких регионов доставки. Также я не уверен, что он доступен там, но в US Jet Pack есть расширение, которое я использовал в прошлом, которое автоматически рассчитывает налог на основе адреса доставки.

0 голосов
/ 21 мая 2019

В случае, если у кого-то еще есть подобная проблема, я решил ее после установки плагина Price Based on Country for WooCommerce (free) и выбора Load products price in background в его настройках

Код не требовался нигде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...