Ottieni il nome dello stato di spedizione da un codice di stato o se l'utente lo digita in WooCommerce
Nel mio caso ho il seguente codice che mostra il nome dello stato, per i paesi che non hanno stati aggiunti, (mostra il testo solo quando l'utente lo ha scritto manualmente).
Ma se l'utente ha scelto un paese a cui sono stati aggiunti stati, mostra il codice invece del nome dello stato: `
<?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
}
?>
Ispirato da Ottieni il nome dello stato invece del codice nel codice di risposta di Woocommerce, che mostra il nome dello stato del paese del cliente. Ma questo codice non viene gestito quando il cliente lo digita manualmente.
Come posso farlo funzionare correttamente in entrambi i casi, quando l'utente lo digita e quando l'utente lo seleziona?
Risposte
Prova quanto segue (supponendo che $order
la variabile sia definita come l' WC_Order
oggetto corrente) :
<?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>';
}
}
?>
Testato e funzionante.