使用过滤器或挂钩更改订单电子邮件上的WooCommerce货币

时间:2019-10-11 07:49:24

标签: wordpress woocommerce hook-woocommerce

我有一个WordPress Woo Commerce网站,我使用USD作为所有产品的主要货币,但在前端网站上,货币和产品价格会根据用户的GEO位置自动以最新汇率自动转换。

例如,如果我添加了一个价格为$ 1.00的产品,如果客户来自尼日利亚,它将显示给他的价格为NGN 362.00,类似地,如果客户来自英国,他将看到价格为£0.80。.

当用户通过任何一种付款方式付款时,它将仅在下订单页面上将价格转换回$ USD。那很好。一切正常。

但是,当收到通过电子邮件发送给管理员的订单时。它会根据客户位置将货币符号显示为NGN或£,但以美元显示价格。

例如:

在电子邮件上也应为1.00美元。但电子邮件上显示的是£1.00。

我想要的是,它应该在订单电子邮件上显示$ 1.00,或£0.80 ..

这是我的代码:我的两个代码都可以在网站上的任何地方完美运行。但不接受订购或感谢订购电子邮件给管理员/客户。

add_filter('woocommerce_currency_symbol', 'cipher_change_currency_symbol');
function cipher_change_currency_symbol()
{
    if (!is_checkout()) {
        $data = cipherDetection();
        return $data['currency_symbol'];
    } else {
        return '$';
    }

}

类似地,用于更改价格。

add_filter('woocommerce_get_price', 'cart_price', 10, 2);
add_filter('woocommerce_get_regular_price', 'cart_price', 10, 2);
add_filter('woocommerce_get_sale_price', 'cart_price', 10, 2);
function cart_price($price, $product)
{
    if (!is_checkout()) {
        $data = cipherDetection();

        $dataPRICE = (float)$data['price'];

        $cipherPRICE = ($dataPRICE * $price);

        $cipherPRICE = bcdiv($cipherPRICE, 1, 2);
        return $cipherPRICE;
    } else {
        return $price;
    }
}

0 个答案:

没有答案