出荷状態の名前は、状態コードから取得するか、ユーザーが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回答コードのコードではなく、Get州名に触発されていますが、このコードは、顧客が手動で入力した場合は処理されません。
ユーザーが入力したときとユーザーが選択したときの両方の場合に、どうすれば正しく機能させることができますか?
回答
1 LoicTheAztec Aug 19 2020 at 22:12
次のことを試してください($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>';
}
}
?>
テストされ、動作します。