รับชื่อสถานะการจัดส่งจากรหัสรัฐหรือหากผู้ใช้พิมพ์ใน WooCommerce
Aug 19 2020
ในกรณีของฉันฉันมีรหัสต่อไปนี้ที่แสดงชื่อของรัฐสำหรับประเทศที่ไม่ได้เพิ่มสถานะ (จะแสดงเฉพาะข้อความเมื่อผู้ใช้เขียนด้วยตนเองเท่านั้น)
แต่ถ้าผู้ใช้เลือกประเทศที่มีการเพิ่มรัฐจะแสดงรหัสแทนชื่อรัฐ:“
<?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
}
?>
ได้รับแรงบันดาลใจจากรับชื่อรัฐแทนรหัสในรหัสคำตอบของWoocommerceซึ่งแสดงชื่อประเทศของลูกค้า แต่รหัสนี้ไม่สามารถจัดการได้เมื่อลูกค้าพิมพ์ด้วยตนเอง
ฉันจะทำให้มันทำงานอย่างถูกต้องในทั้งสองกรณีได้อย่างไรเมื่อผู้ใช้พิมพ์และเมื่อผู้ใช้เลือก
คำตอบ
1 LoicTheAztec Aug 19 2020 at 22:12
ลองทำสิ่งต่อไปนี้(สมมติว่า$order
ตัวแปรถูกกำหนดให้เป็นWC_Order
Object ปัจจุบัน) :
<?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>';
}
}
?>
ผ่านการทดสอบและใช้งานได้จริง