php - 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;
}
}
解决方案
推荐阅读
- ios14 - 如何为 iOS AppClips 创建 QR/NFC 标签
- javafx - 在 JavaFX 的 Controller 类中分配 KeyEvent 的位置
- swift - Swift scrollViewDidScroll - 从对角线滑动检测用户的预期方向
- python - 如何访问由 Kivy 代码发起的类实例?
- python - 从熊猫数据框的一列中提取组标题作为单独的列
- laravel - Laravel 向 WhatsApp 发送消息
- javascript - Gatsby:我怎样才能拥有不区分大小写的动态 URL?
- facebook - 为直播频道抓取 Facebook 游戏?
- java - 通过 PDFBox 程序运行多个 PDF
- sql - SSIS 包在由 sql 作业代理运行时失败