因为它不起作用?
我希望它也有客户端的 IP 来地理定位它帮助我
我已经尝试了很多次,但我无法让它工作。
function obtener_pais_por_ip() {
// Reemplaza 'TU_CLAVE_DE_API' con tu clave de API de ipstack
$api_key = 'TU_CLAVE_DE_API';
$user_ip = $_SERVER['REMOTE_ADDR'];
// Realizar la solicitud a ipstack
$response = wp_remote_get("http://api.ipstack.com/$user_ip?access_key=$api_key");
if (is_wp_error($response)) {
return false;
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body);
return $data->country_code;
}
function aplicar_descuento_por_pais($price, $product) {
$user_country = obtener_pais_por_ip();
// Define los países elegibles para el descuento y el porcentaje del descuento para cada país
$countries_discount = array(
'ES' => 10, // 10% de descuento para España (código ISO 'ES')
'US' => 15, // 15% de descuento para Estados Unidos (código ISO 'US')
// Agrega más países y sus respectivos porcentajes de descuento según tus necesidades
);
if (isset($countries_discount[$user_country])) {
// Aplicar el descuento si el país del usuario está en la lista de países elegibles
$discounted_price = $price * (1 - ($countries_discount[$user_country] / 100));
return $discounted_price;
}
// Si el país del usuario no está en la lista de países elegibles, retornar el precio sin descuento
return $price;
}
add_filter('woocommerce_product_get_price', 'aplicar_descuento_por_pais', 10, 2);
我想让他们根据国家/地区提供折扣
让我们使用 功能性 WooCommerce 地理定位 (与国家/地区免费的 Maxmind GeoLite2 集成)。设置位于 Woocommerce > 设置 > 集成(并且需要在 Maxmind 中打开免费帐户)。
此外,如果您愿意,在常规 woocommerce 设置中,您可以将“默认客户位置”设置为“地理位置”。
// Get the geolocate country code
function get_user_geoip_country_code() {
// Get an instance of the WC_Geolocation object class
$geo_obj = new WC_Geolocation();
// Get user geolocation from user IP
$geolocation = (object) $geo_obj->geolocate_ip($geo_obj->get_ip_address());
return $geolocation->country;
}
// Apply a percentage discount on the product prices based on the geolocated country
add_filter('woocommerce_product_get_price', 'country_based_discount', 10, 2);
function country_based_discount($price, $product) {
$geoip_country = get_user_geoip_country_code();
// Set in the array percentage discount by country
$country_percentage = array(
'ES' => 10, // 10% for Spain
'US' => 15, // 15% for USA
'FR' => 18, // 18% for France
);
// Check if the user country has an available percentage discount
if ( array_key_exists($geoip_country, $country_percentage) && $country_percentage[$geoip_country] > 0 ) {
return $price * (1 - ($country_percentage[$geoip_country] / 100)); // calculate the discounted price for that country
}
return $price;
}
代码位于活动子主题(或活动主题)的functions.php 文件中。已测试并有效。相关: