WordPressでJSONを書き出す例です。投稿一覧ページを非同期で取得したいときに使いそうな形式で出力します。
JSONで書き出す情報
- 投稿ID
- 投稿日
- タイトル
- URL
- 画像フルサイズ
- 画像サムネサイズ
- カテゴリー
- タグ
- 概要
案件によって違いはあると思います。
全ての記事を取得する想定のため、ファイルサイズが大きい本文は省きました。
JSON書き出しテンプレートを準備
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<?php /* Template Name: JSON */ $args = array( 'numberposts' => -1, //全件 ); $posts = get_posts($args); if($posts): foreach($posts as $post): $category_list = []; $cat_list = get_the_category(); foreach ($cat_list as $cat) { array_push($category_list, $cat->name); } $tag_list = []; $term_list = get_the_tags(); foreach ($term_list as $term) { array_push($tag_list, $term->name); } $json[] = array( 'id' => get_the_ID(), 'date' => get_the_date(), 'title' => get_the_title(), 'url' => get_the_permalink(), 'img' => get_the_post_thumbnail_url('', 'full' ), 'thumbnail' => get_the_post_thumbnail_url('', 'thumbnail' ), 'category' => $category_list, 'tag' => $tag_list, 'description' => get_the_excerpt(), ); endforeach; endif; header("Content-Type: application/json; charset=utf-8"); echo json_encode($json); |
4行目までのコメントアウトで、テンプレート名を指定します。
/*
Template Name: JSON
*/
ここでは「JSON」というテンプレート名にしました。
カテゴリーとタグは複数ある可能性があるため、配列で書き出します。
このコードをjson.phpと言うファイル名で保存し、テーマファイルとしてアップロードします。
個別ページでテンプレート指定
空の固定ページを作ります。ページ属性のテンプレートの項目で、先ほど名付けた「JSON」を選択します。
パーマリンクも「・・・/json」など、任意のファイル名に変えておきます。
最後に公開ボタンを押して完了です。
これで、上記で指定したパーマリンクをたたけば、記事一覧のJSONデータを取得できます。