Esto obtendrá un código postal del usuario desde su dirección IP utilizando el código abierto IP2Coordinates service del Data Science Toolkit.
Hay más precisas API de geolocalización, pero esta es absolutamente gratuita y fácil de usar. Si estuviera desarrollando esto en un sitio de producción, usaría HTML5 Geolocation como mi método principal con una alternativa a un mejor geolocalizador IP, como Max Mind.
Tenga en cuenta que esto solo funcionará para los usuarios estadounidenses de su sitio. Probablemente deba pasar datos más detallados a una de las otras API de lugar de Yahoo para utilizar uno de sus WOEID (o elegir una API de clima diferente).
Aquí está el código para usted. Coloque esto justo después de la etiqueta <?php
en su código de muestra. Una vez que esté seguro de que está funcionando, comente todas las líneas que comienzan con print
.
//Get the user's IP address
$user_ip = $_SERVER['REMOTE_ADDR'];
//The Data Science Toolkit URL
$url = 'http://www.datasciencetoolkit.org/ip2coordinates/';
//Find the user's location from their IP.
//*** You need the get_data function from the sample code
$raw_geocode = json_decode(get_data($url . $user_ip));
//Check if the user is in the US
if ('US' === $raw_geocode->$user_ip->country_code) {
//If yes, store their zip code in a variable, and print it
$zip_code = $raw_geocode->$user_ip->postal_code;
printf('<p>Your zip code is: %s</p>', $raw_geocode->$user_ip->postal_code);
} else {
//If the user isn't in the US, set a sip code that will work.
$zip_code = '97211';
//and print an error
printf('<p>Sorry, this app does not work in %s.</p>', $raw_geocode->$user_ip->country_name);
}
//Print the raw data for debugging.
printf('<pre>%s</pre>', print_r($raw_geocode, true));
Ahora cambiar la línea en el código de ejemplo que comienza con $data =
a esto:
$data = get_data("http://weather.yahooapis.com/forecastrss?p={$zip_code}&u=f");
¿Qué debo reemplazar para que este código funcione (o funciona de inmediato)? Lo siento, no tengo acceso a una oferta hasta mañana. muchas gracias por el código y debes publicar esto en trucos CSS o algo así; ¡Creo que este es uno de los únicos tutoriales que pueden hacer esto! – user1373771
Debería funcionar fuera de la caja. – cpilko
Funciona perfectamente! Todo lo que tuve que hacer fue eliminar las partes donde se imprimía el texto (arruinó mi tema wp) y funcionó como un amuleto. ¿Tienes una página web? ¡Me encantaría agregarle un crédito en el pie de página! – user1373771