我正在尝试根据产品类别更改默认的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;
}
但同样的事情。它会针对“清除”类别中的所有产品显示'$$$'
,但会删除任何其他产品的'$'
。
我做错了什么?
答案 0 :(得分:2)
相关: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文件。
现在应该可以了。
答案 1 :(得分:0)
为当前主题创建子主题可能是解决方案,但是我认为,如果您只想更改符号,则不必做那么多。
只需转到woocommerce后端文件..
wp-content/plugins/woocommerce/includes/wc-core-functions.php
如果您的Wordpress主题中没有后端文件过多的下载文件管理器,则您会在主站点中看到这些文件夹。
wp-content>>plugins>>woocommerce>>includes>>wc-core-functions.php
在wc-core-function.php
文件中,您将看到符号