就我而言,我有以下代码,对于没有添加州的国家/地区,显示州的名称(它仅在用户手动编写时显示文本)。但是,如果用户选择的国家/地区确实添加了州,那么它会显示代码而不是州名称:`<?php $custom_order_meta = get_post_meta($order->get_order_number(), '_shipping_state', true); if( ! empty($custom_order_meta) ) { ?><p> <?phpprintf( '<b>Region / Province:</b> ' . esc_html( '%s', 'woocommerce' ), esc_html($custom_order_meta) );?> </p> <?php } ?>受到获取州名称而不是 Woocommerce 应答代码中的代码的启发,该代码显示客户国家/地区州的名称。但是当客户手动键入时,此代码不会处理。当用户键入它和用户选择它时,如何让它在两种情况下都能正常工作?
1 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
尝试以下操作(假设$order变量被定义为当前WC_Order对象):
<?php
$shipping_country = $order->get_shipping_country();
$shipping_state = $order->get_shipping_state();
if( ! empty($shipping_state) ) {
$country_states = WC()->countries->get_states( $shipping_country );
$value = isset($country_states[$shipping_state]) ? $country_states[$shipping_state] : $shipping_state;
if( ! empty($value) ) {
echo '<p><strong>' . __("Region / Province", "woocommerce") . '</strong>: ' . esc_html($value) . '</p>';
}
}
?>
经过测试并有效。
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报
0/150
提交
取消