Dapatkan nama negara bagian pengiriman dari kode negara bagian atau jika pengguna mengetiknya di WooCommerce
Dalam kasus saya, saya memiliki kode berikut yang menunjukkan nama negara bagian, untuk negara-negara yang tidak menambahkan negara bagian, (ini hanya menampilkan teks ketika pengguna telah menulisnya secara manual).
Tetapi jika pengguna telah memilih sebuah negara yang memiliki negara bagian yang ditambahkan maka itu akan menampilkan kode, bukan nama negara bagian: `
<?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
}
?>
Terinspirasi oleh Dapatkan nama negara alih-alih kode di kode jawaban Woocommerce , yang menampilkan nama negara bagian pelanggan, tetapi kode ini tidak menangani saat pelanggan mengetiknya secara manual.
Bagaimana saya bisa membuatnya berfungsi dengan benar dalam kedua kasus, ketika pengguna mengetiknya dan ketika pengguna memilihnya?
Jawaban
Coba yang berikut ini (dengan asumsi bahwa $ordervariabel didefinisikan sebagai WC_OrderObjek saat ini ) :
<?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>';
}
}
?>
Teruji dan berhasil.