WP REST APIでJSONデータを取得する(基本データ+カスタム要素の追加&カスタム投稿)
WP REST APIを利用すると、PHP以外の言語でWordPressのデータが扱えるようになり、とても便利ですよね。(ちなみにREST APIの”REST“は”REpresentational State Transfer”の略。画像のような休憩のRESTじゃないです…)
大体のモダンな言語ではHTTPの送信とJSONデータが扱えるのではないかと思います。(知らんけど)
予め用意されている基本のJSONデータ
投稿データを取得
最新の投稿10件を取得されます。
http://example.com/wp-json/wp/v2/posts
ちなみに当サイトのデータ
https://illustswitch.com/wp-json/wp/v2/posts
データが見辛いわっ!…という場合
Chromeを使用されている場合は”JSON Viewer“というアドオンがおススメです。綺麗に整形して表示してくれます。
がっつり開発に使用するなら”Postman“というアプリもいいかもしれません。
投稿データを3件取得する
件数を指定するには”per_page”クエリパラメーターを使用します。
http://example.com/wp-json/wp/v2/posts?per_page=3
投稿データをIDで指定する
下記は”ID=123″の投稿を取得する例
http://example.com/wp-json/wp/v2/posts/123
カテゴリーIDで投稿データを絞り込み
下記はカテゴリーID=5の投稿を取得する例
http://example.com/wp-json/wp/v2/posts?categories=5
固定ページのデータを取得
http://example.com/wp-json/wp/v2/pages
キーワード検索する
これを利用すればJavaScript等で検索アプリ作れます。
http://example.com/wp-json/wp/v2/posts?search=検索したい文字列
ちなみに当サイトを”wordpress”で検索した結果↓ ↓ ↓
https://illustswitch.com/wp-json/wp/v2/posts?search=wordpress
デフォルトのJSONデータにカスタム要素を追加する
APIデフォルトデータには含まれない要素を追加するにはfunctions.phpに記述を加えます。
APIデフォルトデータには含まれない、”投稿の作成者名 “を追加する例
functions.php
function my_custom_restapi() {
//第1引数:post_type 第2引数:プロパティ名 第3引数:値
register_rest_field('post', 'authorName', array(
'get_callback' => function() {
return get_the_author();
}
));
}
add_action('rest_api_init', 'my_custom_restapi');
カスタム投稿のデータを取得する
カスタム投稿タイプのデータは予め用意されていないのですが、register_post_type関数で投稿タイプを登録する際に、‘show_in_rest’ => trueを加えることで利用できるようになります。(これだけ!簡単)
functions.php
function my_custom_post() {
register_post_type('mypost', array(
'show_in_rest' => true, //←これを加える
...
));
}
add_action('init', 'my_custom_post');
JSONデータ(エンドポイント)
http://example.com/wp-json/wp/v2/mypost