首页 > 解决方案 > WooCommerce - 价格在购物车/结帐页面上转换了两次

问题描述

我用于报价请求网站的货币转换插件运行良好,直到我从电子邮件重定向到购物车页面。我使用 GBP 作为基础货币,使用 USD、EUR、CAD、AED 作为其他货币。

如果我以美元(或任何其他)提出请求,当我被重定向到购物车页面时,电子邮件中的价格会再次转换,这会扭曲客户收到的价值。我相信它假设来自电子邮件的价格是英镑,因此不需要进行第二次转换。

我找到了一个假设的解决方法,但它是针对单一货币的。

//We are reversing the price of product to USD in cart page, because the rate is applied again there
add_action('woocommerce_before_calculate_totals', 'fix_currency_conversion');
function fix_currency_conversion($cart_object){
            global $WOOCS;
            $cur_currency = $WOOCS->current_currency;
            $currencies = $WOOCS->get_currencies();
            $conversion_rate = $currencies[$WOOCS->current_currency]['rate'];
            if($cur_currency == 'HKD'){
                foreach ( $cart_object->cart_contents as $cart_item_key => $cart_item ) {
                    $cart_item['data']->price = $cart_item['data']->price / $conversion_rate;
                }
            }
}

您能否建议我如何添加更多货币?我已经尝试过了,但我的 php 不是那么强大。我在上面的 if 语句的位置添加了这一行:

// Do not convert these currencies
$keep_rate = array( 'NGN', 'USD', 'CAD', 'EUR', 'AED' );

// Don’t convert currencies when it's one of these rates
if ( has_term( $keep_rate, 'currencies', $WOOCS->get_currencies() ) ) {
foreach ( $cart_object->cart_contents as $cart_item_key => $cart_item ) {
                    $cart_item['data']->price = $cart_item['data']->price / $conversion_rate;
                }
}

标签: phpwordpresswoocommercecurrencyconverters

解决方案


推荐阅读