WordPressでもREST APIがプラグインで提供され、かつ、独自エンドポイントも作れるようになっていました。実装方法や説明は、色んな方がまとめてくれているので、そちらを見た方が早いです。(他力本願)
ただし、参考先のソースだと一部動かなかった部分などあったので、そこだけ補足しておきます。
参考URL
まずは公式
http://v2.wp-api.org/
WP REST API V2にてカスタムエンドポイントを追加するまとめ
http://kayakuguri.github.io/blog/2016/07/12/wp-rest-api-custom-endpoint/
WP REST API のドキュメントの認証ページの翻訳
http://nskw-style.com/2016/wordpress/wp-api/auth.html
WP REST APIを利用したNodeJSのWebアプリを死ぬ思いで作る
http://takahashifumiki.com/web/programing/3683/
注意事項
ここからが本題。
API側
ステータスとかは、WP_REST_Response
クラスを使うと返せるようです。ただし、参考ソースは公式ドキュメントを見るようにしましょう。
公式ドキュメント
http://v2.wp-api.org/extending/adding/
// return a response or error based on some conditional
if ( 1 == 1 ) {
return new WP_REST_Response( $data, 200 );
}else{
return new WP_Error( 'code', __( 'message', 'text-domain' ) );
}
JS側
オレオレエンドポイントへのアクセス方法については、公式ドキュメントには何も言及が無いように見えます。(私が見落としているだけかもなので、知っていたら教えてください)
有志の方の説明を見ると、WP_API_Settings
を使うようサンプルソースが多いのですが、動かないのでおかしいと思ってソースを確認したら、wpApiSettings
に名称が変わっていました。そこだけ注意しましょう。
$.ajax({
url : wpApiSettings.root + 'wp/v2/users/me',
method : 'GET',
beforeSend: function (xhr) {
xhr.setRequestHeader('X-WP-Nonce', wpApiSettings.nonce);
}
}).done(function (response) {
console.log(response);
});
おまけ
http://v2.wp-api.org/extending/javascript-client/
公式ドキュメントにそのまんま書いてありますが、JSからAPIアクセスするには、wp-apiスクリプトをEnqueueしてあげる必要があります。
// (1)直接enqueueする
wp_enqueue_script( 'wp-api' );
と直接やるか、または
// (2)アクセス処理をしているJSファイルのenqueue時に依存関係にwp-apiを指定
wp_enqueue_script( 'my_script', 'path/to/my/script', array( 'wp-api' ) );
このように、依存指定のところ(arrayで指定している箇所)にwp-api
を指定すれば、(1)を記述する必要はないです。