💡

WordPressのREST APIを使う

2022/08/08に公開

REST APIについて

wordpress4.7以降、プラグインなしでAPIが使用できるようになりました。
特に制御しない限り、どんなwordpressのサイトでもアクセスできるので
使用したくない、されたくない場合は無効にしたり、一部項目を表示させないような対応をする必要があります。
ただ、導入しているプラグインがAPIを使用している可能性もあるので安易に無効にしないほうがいいです。

仕様の詳細

WordPress REST APIリファレンス
https://developer.wordpress.org/rest-api/

エンドポイント

パーマリンク設定済みの場合

https://{domain}/wp-json/wp/v2/

パーマリンク未設定の場合

https://{domain}/?rest_route=/wp/v2/

apiの取得例

  • 記事情報を取得する
// 記事IDを指定して記事を取得
https://{domain}/wp-json/wp/v2/posts/{記事ID}

// 毎ページ10件の記事一覧の3ページ目を取得
https://{domain}/wp-json/wp/v2/posts?per_page=10&page=3

その他利用

記事データを取得する以外に、WordPress管理画面以外からの記事投稿が可能

使い方

同じとメインからAPIを呼び出す場合

  • ajaxを使う
<script>
    $.ajax({
        url: "https://{domain}//wp/v2/posts/",
        data: "{条件}",
        dataType: "json",
    }).done(function(data){
    }).fail(function(XMLHttpRequest, textStatus, errorThrown){
    });
</script>

別ドメインからAPIを呼び出す場合

  • jsonp形式でレスポンスを取得する

ajaxでも問題ないかもしれないが、別方法としてscriptタグのsrc属性を活用した方法を記載する。
WordPressではGETパラメータに「_jsonp」を付与し、値を任意の関数名にしてあげるとレスポンスを任意の関数に渡すことができる。

<script src="https://{domain}//wp/v2/posts?_jsonp=hoge"></script>
<script>
    function hoge(data) {
        // 受け取ったレスポンスの処理
    }
</script>

注意

WordPress REST APIでは記事情報が取得できるほか、
管理画面を利用しているユーザー情報も取得することが可能です。
APIを使うのであれば基本的には消したほうが無難です。

Discussion