Weather in WordPress
There are cases, when need output one or more weather parameters e.g. temperature or wind speed and direction or set custom styles for weather parameters. In this case, install plugin will not solve the problem and good solution will be write a small function.

Problem: Output weather parameters without plugin in WordPress.
Solution: Firstly, we should be get API key from one of weather services openweathermap.org, weather.com, etc.
Step 1:
<?php
// Get Weather For 1 Day From openweathermap.org
function get_weather( $coordinates ) {
$API_key = '111222333444555';
$json = file_get_contents( 'http://api.openweathermap.org/data/2.5/weather?&units=imperial&lat=' . $coordinates['lat'] . '&lon=' . $coordinates['lng'] . '&appid=' . $API_key );
$data = json_decode( $json, true );
$weather = [
'temperature' => round( $data['main']['temp'], 0 ),
'description' => ucfirst( $data['weather'][0]['description'] ),
'icon' => 'http://openweathermap.org/img/wn/' . $data['weather'][0]['icon'] . '@2x.png',
];
return $weather;
}
// Get Weather For 5 Days From openweathermap.org
function get_weather( $coordinates, $days ) {
$API_key = '111222333444555';
$json = file_get_contents( 'https://api.openweathermap.org/data/2.5/onecall?&units=imperial&lat=' . $coordinates['lat'] . '&lon=' . $coordinates['lng'] . '&exclude=minutely,hourly&appid=' . $API_key );
$data = json_decode( $json, true );
$days = ( is_int( $days ) ) ? $days : (int)$days;
$weather = [
'today' => [
'date' => $data['daily'][0]['dt'],
'temp' => round( $data['current']['temp'], 0 ),
'description' => $data['current']['weather'][0]['description'],
'icon' => 'http://openweathermap.org/img/wn/' . $data['current']['weather'][0]['icon'] . '@2x.png',
],
];
if ( $days ) {
for ( $i = 1; $i <= $days; $i++ ) {
$weather[ $i . '-day' ] = [
'date' => $data['daily'][ $i ]['dt'],
'temp' => round( $data['daily'][ $i ]['temp'], 0 ),
'description' => $data['daily'][ $i ]['weather'][0]['description'],
'icon' => 'http://openweathermap.org/img/wn/' . $data['daily'][ $i ]['weather'][0]['icon'] . '@2x.png',
];
}
}
return $weather;
}
Unit of measurement:
units=imperial — Fahrenheit
units=metric — Celsius
Sources: