WordPress 上でJSONファイルを読み込んで情報を取得する手法を試したので、自分の為の備忘録として記録しておきます。

  1. WordPressテーマ内にデータを準備しておきます。(ここでは、data/jsondata.json。中身はこんな感じになってます。)

{"articleField":
{"articleData":[
{
"number":"1",
"article-head":"記事の見出し",
"article-text":"記事の本文",
"article-image":"記事画像のURL",
"article-link":"記事のリンク先URL"
},
{
"number":"2",
"article-head":"記事の見出し",
"article-text":"記事の本文",
"article-image":"記事画像のURL",
"article-link":"記事のリンク先URL"
},
{
"number":"3",
"article-head":"記事の見出し",
"article-text":"記事の本文",
"article-image":"記事画像のURL",
"article-link":"記事のリンク先URL"
}
]}
}

  1. 該当するページ内に次の記述を追記すると、jsonファイル内のデータを取得することができます。

<?php // jsonデータの取得
$url = get_stylesheet_directory_uri().'/data/jsondata.json';
$json = file_get_contents($url);
$json = mb_convert_encoding($json, 'UTF8', 'ASCII, JIS, UTF-8, EUC-JP, SJIS-WIN');
$arr = json_decode($json, true);
if($arr === NULL){
retuen;
} else{
$json_count = count($arr["articleField"]["articleData"]);
?>
<!-- ココにJSONファイルの処理内容を記述する -->
<?php echo $arr["articleField"]["articleData"][0]["year-issue"]; ?>
<?php }  // ココまで | jsonデータの取得 ?>

  1. お好みで取得した配列をループで回せば、とても嬉しい結果が得られますね。

取得データのエンコードとデコードする処理が入っているんですが、なんでこんなん要れる必要があるんでしょうね?ちょっと調べてみました。

機械(プログラム)が文字列を解釈する為には「文字集合」と「エンコード文字」という概念があり、機械が文字列にあたるデータを「どの言語」・「どういうやり方」で人間の解釈できる文字に変換するかを決めているのがエンコードのようです。

出典:文字コードとは?エンコードとは?なぜ文字化けするのか? | kinopyo blog

そして、JSONエンコードされた文字列をPHPで扱える変数に変換する処理がデコードのようです。

出典:json_decode| php.net

大抵の方は記述されているプログラムが動きさえすれば良いと考えるとは思いますが、裏側の概念や仕組みを知るともっと面白い世界が広がってますよ。

カテゴリー: WEBブログ