在WooCommerce email-customer-details.php电子邮件模板中获取订单结算城市

时间:2017-08-01 10:10:55

标签: php wordpress woocommerce orders email-notifications

我不明白为什么 get_billing_city() 方法在 WC_email customer_details() 方法中不起作用,不像 get_billing_country() 工作正常。

如何让 get_billing_city() 使用 WC_Email customer_details() 方法获取正确的输出在 email-customer-details.php WooCommerce模板中?

1 个答案:

答案 0 :(得分:0)

似乎在woocommerce中存在一些小错误。

然后,由于这是与订单相关的电子邮件通知,您应该使用 get_billing_country() 方法代替 WC_Order

对于 WC_Order 对象 get_billing_country() 方法,这可以通过以下转折来解决:

add_filter( 'woocommerce_order_get_billing_country','hook_order_get_billing_country', 10, 2);
function hook_order_get_billing_country( $value, $order ){
    // Country codes/names
    $countries_obj = new WC_Countries;
    $country_array = $countries_obj->get_countries();
    // Get the country name from the country code
    $country_name = $country_array[ $value ];
    // If country name is not empty we output it
    if( $country_name )
        return $country_name;
    // If $value argument is empty we get the country code
    if( empty( $value ) ){
        $country_code = get_post_meta( $order->get_id(), '_billing_country', true );
        // We output the country name
        return $country_array[ $country_code ];
    }
    return $value;
}

代码进入活动子主题(或主题)的function.php文件或任何插件文件中。

代码经过测试,适用于wooCommerce版本3 +

  

所以现在你应该让它工作并输出正确的国家名称

对于 WC_Customer 方法的 get_billing_country() 对象,您应该使用此方法:

add_filter( 'woocommerce_customer_get_billing_country','wc_customer_get_billing_country', 10, 2);
function wc_customer_get_billing_country( $value, $customer ){
    // Country codes/names
    $countries_obj = new WC_Countries;
    $country_array = $countries_obj->get_countries();
    // Get the country name from the country code
    $country_name = $country_array[ $value ];
    // If country name is not empty we output it
    if( $country_name )
        return $country_name;
    // If $value argument is empty we get the country code
    if( empty( $value ) ){
        $country_code = get_user_meta( $customer->get_id(), 'billing_country', true );
        // We output the country name
        return $country_array[ $country_code ];
    }
    return $value;
}

代码进入活动子主题(或主题)的function.php文件或任何插件文件中。