Получите название состояния доставки из кода состояния или если пользователь вводит его в WooCommerce.
В моем случае у меня есть следующий код, который показывает название штата для стран, в которых нет добавленных состояний (он показывает текст только тогда, когда пользователь написал его вручную).
Но если пользователь выбрал страну, в которой есть добавленные штаты, вместо названия штата отображается код: `
<?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 вместо кода в коде ответа 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>';
}
}
?>
Проверено и работает.