我正在尝试使用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);
通过这种方法,我遇到了完全相同的问题,我需要两次更改国家/地区以查看货币变化。