问题描述
在我的情况下,对于没有添加州的国家,我有以下代码显示州名称(仅在用户手动编写时显示该文本)。
但是,如果用户选择的国家/地区确实添加了州,则它会显示代码而不是州名:`
<?PHP
$custom_order_Meta = get_post_meta($order->get_order_number(),'_shipping_state',true);
if( ! empty($custom_order_Meta) )
{ ?>
<p> <?PHP
printf( '<b>Region / Province:</b> ' . esc_html( '%s','woocommerce' ),esc_html($custom_order_Meta) );?>
</p> <?PHP
}
?>
受 Get state name instead of the code in Woocommerce 答案代码的启发,该答案代码显示了客户所在国家/地区的名称。但是,当客户手动键入该代码时,此代码无法处理。
在用户键入和选择时,如何在两种情况下都能正常工作?
解决方法
尝试以下(假设将$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>';
}
}
?>
经过测试可以正常工作。