根据 woocommerce 中的国家/地区进行折扣

问题描述 投票:0回答:2

因为它不起作用?
我希望它也有客户端的 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);

我想让他们根据国家/地区提供折扣

php wordpress woocommerce geolocation hook-woocommerce
2个回答
0
投票

让我们使用 功能性 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 文件中。已测试并有效。

相关:

WooCommerce 和 MaxMind 地理定位集成


0
投票
上面的代码运行良好 添加在代码中显示MRP和折扣百分比

© www.soinside.com 2019 - 2024. All rights reserved.