为了账号安全,请及时绑定邮箱和手机立即绑定

获取自定义元字段的订单货币的符号和代码

获取自定义元字段的订单货币的符号和代码

PHP
哆啦的时光机 2023-10-21 17:16:39
我有以下代码,显示 php 模板发票中自定义字段的值,其中我还显示了订单货币的代码,但货币符号没有出现,我正在使用答案 @LoicTheAztec 中的部分代码问题的,显示订单货币的代码和符号从 YITH 发票插件中的订单获取 Woocommerce 货币符号   <?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;}
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

函数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->get_meta()它。)


查看完整回答
反对 回复 2023-10-21
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信