如何解决获取自定义元字段的订单货币的符号和代码
我有以下代码显示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;
}
`
解决方法
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()
。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。