从WooCommerce中的国家/地区代码获取国家/地区名称

Chr*_*yne 8 php wordpress woocommerce

Wordpress中的WooCommerce定义了国家类如下(编辑简洁)

class WC_Countries {
    public $countries;

    public function __construct() {
        global $woocommerce, $states;

        $this->countries = apply_filters( 'woocommerce_countries', array(
            'AF' => __( 'Afghanistan', 'woocommerce' ),
            'AX' => __( 'Åland Islands', 'woocommerce' ),
            'AL' => __( 'Albania', 'woocommerce' ),
            'DZ' => __( 'Algeria', 'woocommerce' ),

        ));
    }
}
Run Code Online (Sandbox Code Playgroud)

下订单时,国家/地区代码将写入Wordpress wp_postmeta表,并且可以使用以下get_post_meta()函数在任何可以访问订单ID的地方提取:

get_post_meta( $order->id, '_shipping_country', true ),
Run Code Online (Sandbox Code Playgroud)

问题是,由于我们只是从DB中提取两个字符,如何将Shipping国家代码(例如AF)转换为Countries类中给出的Country Name?

Cla*_*hes 25

您可以访问该WC_Countries课程WC()->countries.因此,要从订单中获取国家/地区名称,您必须使用:

WC()->countries->countries[ $order->shipping_country ];
Run Code Online (Sandbox Code Playgroud)

在WooCommerce 3.0+上你应该使用:

WC()->countries->countries[ $order->get_shipping_country() ];
Run Code Online (Sandbox Code Playgroud)

如果你想获得状态,你需要在检查之前是否存在,因为WooCommerce不包括所有状态,所以这里你需要什么:

$states = WC()->countries->get_states( $order->get_shipping_country() );
$state  = ! empty( $states[ $order->get_shipping_state() ] ) ? $states[ $order->get_shipping_state() ] : '';
Run Code Online (Sandbox Code Playgroud)


Ash*_*tri 5

要从状态代码获取状态名称,可以使用。

WC()->countries->states[$order->billing_country][$order->billing_state];
Run Code Online (Sandbox Code Playgroud)