Информация
Версия WooCommerce: 3.6.2
Версия WordPress: 5.1.1
YITH WooCommerce Запрос ценового предложения 2.1.8
Booster Plus 4.3.1 - Модуль "Цены и валюты по странам"
Изменение количества при оформлении заказа для WooCommerce версии 1.0
Текущая ситуация
1.YITH Ручная квота, созданная в евро со страной доставки, установленной как Румыния.
Клиент приземляется на кассе из Австралии.
- Разрыв: цена мини-корзины показывает австралийский доллар. Посмотреть скриншот
Оформление заказа обновляется с помощью , работает под кодом и показывает правильную валюту заказа - евро (но не в мини-корзине) ! Посмотреть скриншот
Цель
Получите правильную валюту заказа в Мини-корзина & Оформление заказа для цитаты, несмотря на страну посещения клиента
Обновление
После долгих поисков я ничего не нашел. Наконец я решил установить плагин 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();
}
}
Нужна помощь
Есть ли какой-нибудь лучший способ добиться этого?
Вся помощь будет высоко ценится