我正在尝试根据产品类别更改默认的 Woocommerce 货币符号。
我的默认 WC 货币设置为美元,并且我的所有产品在价格前都显示有 '$'
前缀。但我不想显示 '$'
,而是仅显示 '$$$'
属于 'clearance'
类别的产品。
这是我的代码:
add_filter('woocommerce_currency_symbol', 'change_existing_currency_symbol', 10, 2);
function change_existing_currency_symbol( $currency_symbol, $currency ) {
global $post, $product, $woocommerce;
if ( has_term( 'clearance', 'product_cat' ) ) {
switch( $currency ) {
case 'USD': $currency_symbol = '$$$'; break;
}
return $currency_symbol;
}
}
它有效,并且仅针对“清仓”类别中的产品显示“$$$”,但它会从其余类别中的所有产品中删除“$”。
如果条件不满足,我需要 if 语句不执行任何操作。
我还尝试过使用 endif
结束标记,如下所示:
add_filter('woocommerce_currency_symbol', 'change_existing_currency_symbol', 10, 2);
function change_existing_currency_symbol( $currency_symbol, $currency ) {
global $post, $product, $woocommerce;
if ( has_term( 'clearance', 'product_cat' ) ) :
switch( $currency ) {
case 'USD': $currency_symbol = '$$$'; break;
}
return $currency_symbol;
endif;
}
但这里也是同样的事情。它为“清仓”类别中的所有产品显示 '$$$'
,但删除任何其他产品的 '$'
。
我做错了什么?
最佳答案
Related: Custom cart item currency symbol based on product category in Woocommerce 3.3+
您需要将 return $currency_symbol;
放在 if
语句之外,如下所示:
add_filter('woocommerce_currency_symbol', 'change_existing_currency_symbol', 10, 2);
function change_existing_currency_symbol( $currency_symbol, $currency ) {
global $post, $product;
if ( has_term( 'clearance', 'product_cat' ) ) {
switch( $currency ) {
case 'USD': $currency_symbol = '$$$';
break;
}
}
return $currency_symbol; // <== HERE
}
代码位于事件子主题(或事件主题)的 function.php 文件中。
现在应该可以工作了。
关于php - 根据 Woocommerce 中的产品类别更改货币符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48420586/