WP REST APIでJSONデータを取得する(基本データ+カスタム要素の追加&カスタム投稿)

WP REST APIでJSONデータを取得する(基本データ+カスタム要素の追加&カスタム投稿)

WP REST APIを利用すると、PHP以外の言語でWordPressのデータが扱えるようになり、とても便利ですよね。
(ちなみにREST APIの”REST“は”REpresentational State Transfer”の略。画像のような休憩のRESTじゃないです…)
当サイトもWP REST API + JavaScriptでリアルタイム検索を実装してみています。
よろしければヘッダ右の虫眼鏡ボタンを押してみてください。
大体のモダンな言語では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″の投稿を取得する例

“ID=123″の投稿を取得する例

http://example.com/wp-json/wp/v2/posts/123

カテゴリーIDで投稿データを絞り込み

下記はカテゴリーID=5の投稿を取得する例

“カテゴリーID=5″の投稿を取得する例

http://example.com/wp-json/wp/v2/posts?categories=5

固定ページのデータを取得

固定ページ10件のデータを取得

http://example.com/wp-json/wp/v2/pages

キーワード検索する

これを利用すればJavaScript等で検索アプリ作れます。

http://example.com/wp-json/wp/v2/posts?search=検索したい文字列

ちなみに当サイトを”wordpress”で検索した結果↓ ↓ ↓

ちなみに当サイトを”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


フルスクラッチでエンドポイントを作成する方法は下記投稿で。

この記事をシェア

Categories

Profile

兵庫県神戸市でWEB/DTPまわりのフリーランスをしています。
当ブログは主に業務で出会った諸々の備忘録です。

イラストスイッチ