【问题标题】:Get the symbol and code of the order currency for a custom meta field获取自定义元字段的订单货币的符号和代码
【发布时间】:2020-12-10 00:06:23
【问题描述】:

我有以下代码,显示了 php 模板发票中自定义字段的值,其中我还显示了订单货币的代码,但货币符号没有出现,我使用的部分代码来自回答问题的@LoicTheAztec,显示订单货币的代码和符号Get Woocommerce currency symbol from order in YITH invoice plugin

    <?php
        $custom_order_meta = get_post_meta($order->get_order_number(), 'costoseguro', true);
    
        if( ! empty($custom_order_meta) )
        { ?>
    <p> <?php
    printf( '<b>Insured Package Value:</b> ' . esc_html( '%s', 'woocommerce' ), esc_html($custom_order_meta)  );?> <?php $currency_code = $order->get_currency();
$currency_symbol = get_woocommerce_currency_symbol( $currency_code ); ?></p> <?php 
        }
        ?>

在 fuctions.php 文件中,我使用此代码更改货币符号和代码:`

add_filter( 'woocommerce_currency_symbol', 'change_currency_symbol', 10, 2 );
function change_currency_symbol( $symbols, $currency ) {
    if ( 'USD' === $currency ) {
        return 'USD $ ';
    }
    if ( 'EUR' === $currency ) {
        return 'EUR € ';
    }
    if ( 'COP' === $currency ) {
        return 'COP $';
    }
        return $symbols;
}

`

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    get_currency() 函数和get_woocommerce_currency_symbol() 函数不会输出任何内容。它们只是检索一个值,因此如果您想显示它们,您必须将它们合并到您的 printf() 函数中。另外我认为switch 语句更适合您的过滤器。所以你的代码看起来像这样:

    add_filter( 'woocommerce_currency_symbol', 'change_currency_symbol', 10, 2 );
    function change_currency_symbol( $symbol, $currency ) {
        switch ( $currency ) {
            case 'USD':
                $symbol = 'USD $';
                break;
            case 'EUR':
                $symbol = 'EUR €';
                break;
            case 'COP':
                $symbol = 'COP $';
                break;
        }
        return $symbol;
    }
    
    if ( !empty( $order->get_meta( 'costoseguro' ) ) ) {
        printf( '<p><b>Insured Package Value:</b> %s %s</p>', $order->get_meta( 'costoseguro'), get_woocommerce_currency_symbol( $order->get_currency() ) );
    }
    

    (另请注意,调用get_post_meta() 来检索订单元数据已经过时了。您最好使用$order-&gt;get_meta()。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-07
      • 2012-06-12
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 2012-02-01
      • 2019-08-27
      相关资源
      最近更新 更多