在 Woocommerce 3 中获取用户地理定位的国家名称

Kri*_*ina 7 html php wordpress geoip woocommerce

我想根据用户 geoip 国家/地区名称在 WooCommerce 标头中添加“We ship to{country name} ”?

我想在我的 WooCommerce 商店的标题中写入 html 内容,例如We ship to "Your Country name"

任何帮助将不胜感激?

我已经启用了 WooCommerce 地理定位。

Loi*_*tec 15

您可以通过这种方式基于WC_GeolocationClass创建自定义函数:

function get_user_geo_country(){
    $geo      = new WC_Geolocation(); // Get WC_Geolocation instance object
    $user_ip  = $geo->get_ip_address(); // Get user IP
    $user_geo = $geo->geolocate_ip( $user_ip ); // Get geolocated user data.
    $country  = $user_geo['country']; // Get the country code
    return WC()->countries->countries[ $country ]; // return the country name

}
Run Code Online (Sandbox Code Playgroud)

代码位于活动子主题(或活动主题)的 function.php 文件中。测试和工作。


用法

您将在您的子主题header.php文件中添加以下代码:

1)在html代码之间:

<?php printf( '<p>' . __('We ship to %s', 'woocommerce') . '</p>', get_user_geo_country() ); ?>
Run Code Online (Sandbox Code Playgroud)

2)或在php代码之间:

printf( '<p>' . __('We ship to %s', 'woocommerce') . '</p>', get_user_geo_country() );
Run Code Online (Sandbox Code Playgroud)

将此转换为简码:

function get_user_geo_country(){
    $geo      = new WC_Geolocation(); // Get WC_Geolocation instance object
    $user_ip  = $geo->get_ip_address(); // Get user IP
    $user_geo = $geo->geolocate_ip( $user_ip ); // Get geolocated user data.
    $country  = $user_geo['country']; // Get the country code
    return sprintf( '<p>' . __('We ship to %s', 'woocommerce') . '</p>', WC()->countries->countries[ $country ] );
}
add_shortcode('geoip_country', 'get_user_geo_country');
Run Code Online (Sandbox Code Playgroud)

代码位于活动子主题(或活动主题)的 function.php 文件中。测试和工作。

正常的短代码使用(在后端文本编辑器中)

[geoip_country]
Run Code Online (Sandbox Code Playgroud)

或在 php 代码中:

echo do_shortcode( "[geoip_country]" );
Run Code Online (Sandbox Code Playgroud)