doushuo1080 2018-03-01 00:05
浏览 46

使用WooCommerce Multilingual Plugin在结账时更改货币

I'm trying to implement currency change on checkout with WooCommerce Multilingual Plugin. I need a country with COP and the rest of countries with USD. First I tried to use the wcml_client_currency hook.

function modify_client_currency( $currency ) {
  $country = WC()->customer->get_billing_country();
  if ($country === 'CO') {
    return 'COP';
  } else {
    return 'USD';
  }
}

add_filter( 'wcml_client_currency', 'modify_client_currency', 10, 1 );

If I start with Colombia selected, the currency is in COP, but if I change to another country, the currency stay on COP. I need to change the country again to see the change.

I tried another approach with the woocommerce_checkout_update_order_review and analyzing how the multilingual plugin works.

function action_woocommerce_checkout_update_order_review( $post_data ) {
  // This part will change dynamically based on the country contained in $post_data
  $currency = 'COP';

  global $woocommerce_wpml;
  $woocommerce_wpml->multi_currency->set_client_currency($currency);

  global $woocommerce, $current_user;
  if(empty($woocommerce->session->data) && empty($current_user->ID)){
      $woocommerce->session->set_customer_session_cookie(true);
  }
  do_action('wcml_switch_currency', $currency );

  WC()->cart->calculate_totals();
}

add_action('woocommerce_checkout_update_order_review', 'action_woocommerce_checkout_update_order_review', 10, 1);

With this approach I have exactly the same problem, I need to change the country twice to see the currency change.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 ogg dd trandata 报错
    • ¥15 高缺失率数据如何选择填充方式
    • ¥50 potsgresql15备份问题
    • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
    • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
    • ¥60 pb数据库修改与连接
    • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
    • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
    • ¥20 神经网络Sequential name=sequential, built=False
    • ¥16 Qphython 用xlrd读取excel报错