WordPressに気象庁APIで天気を表示する

  • Updated: 2023.07.24
  • Published: 2023.07.24
  • 1,394views
  • API
  • php
  • WordPress
  • 気象庁

概要

気象庁が提供しているAPIから天気情報をWordPressに表示します。


エリア情報

エリア情報は下記URLから確認することができます。

https://www.jma.go.jp/bosai/common/const/area.json

JSONのcenters>childrenが取得できるJSONになります。

例)宗谷地方

https://www.jma.go.jp/bosai/forecast/data/forecast/011000.json

北海道地方
宗谷地方011000
上川・留萌地方012000
網走・北見・紋別地方013000
十勝地方014030
釧路・根室地方014100
胆振・日高地方015000
石狩・空知・後志地方016000
渡島・檜山地方017000
東北地方
青森県020000
岩手県030000
宮城県040000
秋田県050000
山形県060000
福島県070000
関東甲信地方
茨城県080000
栃木県090000
群馬県100000
埼玉県110000
千葉県120000
東京都130000
神奈川県140000
山梨県190000
長野県200000
東海地方
岐阜県210000
静岡県220000
愛知県230000
三重県240000
北陸地方
新潟県150000
富山県160000
石川県170000
福井県180000
近畿地方
滋賀県250000
京都府260000
大阪府270000
兵庫県280000
奈良県290000
和歌山県300000
中国地方(山口県を除く)
鳥取県310000
島根県320000
岡山県330000
広島県340000
四国地方
徳島県360000
香川県370000
愛媛県380000
高知県390000
九州北部地方(山口県を含む)
山口県350000
福岡県400000
佐賀県410000
長崎県420000
熊本県430000
大分県440000
九州南部・奄美地方
宮崎県450000
奄美地方460040
鹿児島県(奄美地方除く)460100
沖縄地方
沖縄本島地方471000
大東島地方472000
宮古島地方473000
八重山地方474000

スクリプト

今回は京都南部の天気を表示します。

function weather_search(){
	if ( false === ( $weather_data = get_transient( 'weather' ) ) ) {
		$list = array();
		$url = "https://www.jma.go.jp/bosai/forecast/data/forecast/260000.json";
		$json = file_get_contents($url);
		try {
			$result = json_decode( $json, true, 512, JSON_THROW_ON_ERROR );
		} catch ( JsonException $e ) {
		}
		if ($result !== NULL) {
			$week         = array("日","月","火","水","木","金","土") ;
			$timeDefines  = $result[0]['timeSeries'][0]['timeDefines'];
			$weatherCodes = $result[0]['timeSeries'][0]['areas'][0]['weatherCodes'];
			foreach ($timeDefines as $key => $item){
				$list[] = array(
					'date' => date('m月d日',strtotime($item)) .'(' . $week[date('w',strtotime($item))].')',
					'img' => 'https://www.jma.go.jp/bosai/forecast/img/'. $weatherCodes[$key] .'.png'
				);
			}
			$weather_data = $list;

			set_transient( 'weather', $weather_data, 2 * HOUR_IN_SECONDS );
		}
	}

	return $weather_data;
}

$result内には2つの配列がありますが、取得できる情報や日数が違うようです。
必要な情報を取得してください。
今回は日付と天気だけですので$result[0]の情報を使用して表示します。


日付データ・天気コード

$timeDefines  = $result[0]['timeSeries'][0]['timeDefines'];
$weatherCodes = $result[0]['timeSeries'][0]['areas'][0]['weatherCodes'];

日付情報はtimeDefinesで天気情報はweatherCodesで取得しています。

['areas'][0]としているのは京都は北部と南部の情報があるので、南部の情報を取得するようにしています。


画像URL

'img' => 'https://www.jma.go.jp/bosai/forecast/img/'. $weatherCodes[$key] .'.png'

天気コードを元に画像のURLを作成しています。


表示部分

<?php
$list = weather_search();
?>
<ul>
  <?php foreach ($list as $key => $item){ ?>
      <li>
        <div class="img">
          <img src="<?php echo $item['img']; ?>" alt="">
        </div>
        <div class="date">
      <?php echo $item['date'] ;?>
        </div>
      </li>
  <?php } ?>
</ul>

コメントを投稿する

CAPTCHA


関連記事

人気の投稿

最新の投稿

タグ

月別アーカイブ

Contact

WEB制作の依頼など気軽にお問い合わせください。

お問い合わせ