首页 > 解决方案 > 根据产品类别更改结帐货币

问题描述

我需要根据产品类别更改购物车和结帐货币。因此,如果类别是“服装”,那么购物车和结账时的货币应该是欧元(并且费用需要以欧元进行)。否则,如果产品没有附加“服装”类别,则保留默认美元货币。

此代码基本上更改了“服装”类别的默认货币,但仅在产品页面上,在购物车和结帐时不会更改。我也需要在购物车和结帐时更改它,并且费用需要发生在那个货币。

add_filter('woocommerce_currency', 'change_existing_currency_symbol', 10, 2);
function change_existing_currency_symbol( $currency ) {
global $post, $product;

if ( has_term( 'clothing', 'product_cat' ) ) {

return 'EUR';
}else{
return $currency;
}
}

我了解购物车和结帐仅允许每种产品使用一种货币。因此,设置一些限制以允许每个购物车只允许一种产品可能会像这样发生:

add_filter( 'woocommerce_add_to_cart_validation', 'bbloomer_only_one_in_cart', 99, 2 );
   
function bbloomer_only_one_in_cart( $passed, $added_product_id ) {
   wc_empty_cart();
   return $passed;
}

标签: phpwordpresswoocommercehook-woocommerce

解决方案


我做了一些研究,在按类别或按产品动态更改货币时,还有很多额外的复杂性。

我假设,购物车仍然需要计算总数,并提供 1 种结帐货币。这意味着,总数也必须进行转换。

您将在挖掘此插件的代码时找到最佳答案……但我警告您,这比更改符号要复杂得多。


推荐阅读