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

时间:2018-03-01 00:05:41

标签: php wordpress woocommerce

我正在尝试使用WooCommerce Multilingual Plugin在结帐时实施货币更改。我需要一个有COP的国家和其他有美元的国家。首先,我尝试使用wcml_client_currency钩子。

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 );

如果我从选择的哥伦比亚开始,货币是COP,但如果我换到另一个国家,货币将保留在COP。我需要再次改变这个国家才能看到变化。

我尝试了另一种使用woocommerce_checkout_update_order_review的方法,并分析了多语言插件的工作原理。

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);

通过这种方法,我遇到了完全相同的问题,我需要两次更改国家/地区以查看货币变化。

0 个答案:

没有答案