admin管理员组

文章数量:1122846

I would like to show/hide a fee in the WooCommerce checkout process depending on the location of the user.

For this i would like to first use the IP address of the user to determine the location and later the address he enters.

I came across the build-in Geolocation ability of WooCommerce with the following classes:

  • WC_Geo_IP (.html)
  • WC_Geo_IP_Record (.html)
  • WC_Geolocation (.html)

I'm able to get the users IP address with:

$geolocation = new WC_Geolocation();
$ipaddress = $geolocation->get_ip_address();

But i don't seem to be able to get the users country code. How would i go about this?

I would like to show/hide a fee in the WooCommerce checkout process depending on the location of the user.

For this i would like to first use the IP address of the user to determine the location and later the address he enters.

I came across the build-in Geolocation ability of WooCommerce with the following classes:

  • WC_Geo_IP (https://docs.woocommerce.com/wc-apidocs/class-WC_Geo_IP.html)
  • WC_Geo_IP_Record (https://docs.woocommerce.com/wc-apidocs/class-WC_Geo_IP_Record.html)
  • WC_Geolocation (https://docs.woocommerce.com/wc-apidocs/class-WC_Geolocation.html)

I'm able to get the users IP address with:

$geolocation = new WC_Geolocation();
$ipaddress = $geolocation->get_ip_address();

But i don't seem to be able to get the users country code. How would i go about this?

Share Improve this question asked Jul 25, 2017 at 7:51 kleinermannkleinermann 238 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

This is how I used WooCommerce to get the country code on a recent project, using the geolocate_ip method of the WC_Geolocation class.

$country = 'US';

if (class_exists('WC_Geolocation')) {
    $location = WC_Geolocation::geolocate_ip('', true, false);

    if (isset($location['country'])) {
        $country = $location['country'];
    }
}

switch ($country) {
    case 'AU':
        break;
    case 'US':
        break:
}

本文标签: geo dataUnderstanding WooCommerce BuildIn Geolocation GeoIP classes