首页 文章

计算显示WooCommerce Cart价格中的2种货币

提问于
浏览
1
Rp 500000 (USD $ 37.49)

我想在woocommerce的Cart Totals中显示两种货币外观(小计,运费,折扣,保险[自定义费用],包装费[自定义费用]) .

我通过添加以下过滤器成功完成了小计,运费,折扣 .

但这不适用于两种定制费用(保险,包装费) . 当我将$ 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 回答

  • 1

    更新

    有两个主要问题:

    1)您使用的是错误的钩子 . 相反,你应该使用 wc_price .

    2)在你的代码中,因为你应该直接使用未格式化的 $price 参数而不使用它:

    $price_us_int = intval(preg_replace('/[^0-9]+/', '', $price), 10);
    

    现在因为我没有自定义函数的代码 convert_idr_to_usd_cart() 我现在不知道如何进行计算以及如何设置小数位数或此转换后的自定义价格 .

    所以我使用了这个 for testing purpose

    // 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, '.', '');
    }
    

    Here is the correct functional code (没有这个问题):

    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文件中,或者放在任何插件文件中 .

    此代码经过测试并可以使用 .

相关问题