Rp 500000 (USD $ 37.49)
我想在 woocommerce 的购物车总计中显示如上所示的两种货币(小计、运费、折扣、保险[定制费]、包装费[定制费])。
通过添加以下过滤器,我成功地实现了小计、运输、折扣。
但是这对两项报关费(保险费、包装费)不起作用。当我将 $price_us 添加到 .woocommerce-Price-amount.amount 类时,保险/包装费金额将会出错。如果我没有将 $price_us 添加到 .woocommerce-Price-amount.amount 类中,一切都会好的,但只有 1 种货币。
function my_custom_price_format( $formatted_price, $price, $decimals,
$decimal_separator, $thousand_separator ) {
$price_us_int = intval(preg_replace('/[^0-9]+/', '', $price), 10);
$price_us_int = convert_idr_to_usd_cart($price_us_int);
$price_us = "USD $ $price_us_int";
return '<span class="woocommerce-Price-amount amount">' . $formatted_price .' ( '.$price_us.' )</span>';
}
add_filter( 'formatted_woocommerce_price', 'my_custom_price_format', 20, 5 );
有没有人可以帮助我解决这种情况。
更新
有两个主要问题:
1)您使用了错误的钩子。相反,您应该使用
wc_price
。
2)在您的代码中,这是因为您应该直接使用可用的未格式化的
$price
参数,而不使用此:
$price_us_int = intval(preg_replace('/[^0-9]+/', '', $price), 10);
现在因为我没有您的自定义函数的代码
convert_idr_to_usd_cart()
我现在不知道您如何进行计算以及如何设置小数位数或转换后的自定义价格。
所以我用它用于测试目的:
// Just for testing
function convert_idr_to_usd_cart( $price ){
$convertion_rate = 0.016;
$new_price = $price * $convertion_rate;
return number_format($new_price, 2, '.', '');
}
这是正确的功能代码(没有这个问题):
add_filter( 'wc_price', 'my_custom_price_format', 10, 3 );
function my_custom_price_format( $formatted_price, $price, $args ) {
// The currency conversion custom calculation function
$price_usd = convert_idr_to_usd_cart($price);
// the currency symbol for US dollars
$currency = 'USD';
$currency_symbol = get_woocommerce_currency_symbol( $currency );
$price_usd = $currency_symbol.$price_usd; // adding currency symbol
// The USD formatted price
$formatted_price_usd = "<span class='price-usd'> (USD $price_usd)</span>";
// Return both formatted currencies
return $formatted_price . $formatted_price_usd;
}
代码位于活动子主题(或主题)的 function.php 文件中,或者也位于任何插件文件中。
此代码经过测试并且有效。