Je conçois un site pour les événements et j'aimerais que les gens voient une page d'accueil basée sur les événements qui se déroulent dans leur région.
Cela pourrait-il également être fait avec un identifiant, s'ils enregistrent leur adresse?
Ce dernier a une bonne explication sur la façon d'utiliser modernizer qui pourrait ensuite combiner html5/geolocation avec un service web ou quelque chose du genre.
Il est possible d'obtenir des informations de localisation très floues pour la plupart des gens, la plupart du temps en utilisant l'adresse IP et un service geoIP. Je dis "flou" parce que vous obtenez souvent l'emplacement des serveurs du fournisseur de services Internet, et non l'emplacement spécifique de l'adresse IP particulière. Par exemple, à la maison, mon adresse IP est listée comme se trouvant à environ 30 à 40 km de mon lieu de résidence actuel. En outre, certaines personnes peuvent se rendre via un serveur proxy situé à des centaines ou des milliers de kilomètres de leur lieu de résidence actuel. Si ce sont des paramètres acceptables, alors quelque chose comme ...
$IP = $_SERVER['REMOTE_ADDRESS'];
// get location data
// I am using freegeoip.net for this
// I can't vouch for the service. It is just an example,
// but I queried my IP and it worked well.
$location = wp_remote_get("http://freegeoip.net/json/{$IP}");
// var_dump($location);
// location information is in $location['body']
// check status
if ('200' == $location['response']['code']) {
$geoloc = json_decode($location['body']);
var_dump($geoloc);
// and you get this
// stdClass Object
// (
// [city] => xxx
// [region_code] => xx
// [region_name] => xx
// [metrocode] => xxx
// [zipcode] => xxxxx
// [longitude] => xxxxxx
// [latitude] => xxxxxx
// [country_code] => xx
// [ip] => xxx.xxx.xxx.xxx
// [country_name] => xxxxx
// )
// you know have what you need to switch your homepage content
}
freegeoip.net limite les demandes à 1 000 par heure. Veillez donc à n'exécuter le code que lorsque cela est nécessaire - définissez un cookie, quelque chose. Je recommanderais de mettre en cache les données afin de réduire le nombre de demandes et de réduire le temps système/délai nécessaire pour contacter un service tiers.