WordPressに REST APIを通じて操作できる「WP REST API」。Version 2.0がまだβ版ですが、触ってみました。
プラグインのインストール
WP REST API Version 2.0は、まだ公式ディレクトリからはインストールできないため、GitHubなどからダウンロードして ZIPファイルのアップロードという方法でインストールを行ないます。
インストール後は、念のためパーマリンク設定を更新しておくと良いでしょう。なお、パーマリンク設定が「標準」の状態だと動作しません。
投稿を取得する
「GET」は非常に簡単です。次のようなプログラムを組みます。
jQuery.getJSON('wp-json/wp/v2/posts', function(json) {
console.log(json[0].title.rendered);
});
「wp-json/wp/v2/posts」というURLが、JSONで最新エントリーを取得する URLになるため、これを jQueryなどで呼び出すとJSONデータが取得できます。他に、個別の投稿取得など、機能別にURLが割り当てられています。
新規に投稿する
「POST」は非常にややこしく、公式ドキュメントを読んでもうまく動かせませんでした。
あれこれ調べて、次の手順で一応うまく行きましたが、これで正しいのかまだ分かっていません。
最初に、<head>
要素内に以下を記述します。
<?php wp_enqueue_script('wp-api', bloginfo('url') . '/wp-content/plugins/rest-api/wp-api.js'); ?>
<?php wp_localize_script( 'wp-api', 'WP_API_Settings', array( 'root' => esc_url_raw( rest_url() ), 'nonce' => wp_create_nonce( 'wp_rest' ) ) ); ?>
これにより、「wp-api.js」という JavaScriptファイルが読み込まれ、その時に同時に WordPressのログイン認証の情報が JavaScriptに渡されるようです。次に、<body>
要素の最後に以下を記述します(wp_footer() よりも後)
jQuery.ajax( {
url: wpApiSettings.root + 'wp/v2/posts',
method: 'POST',
beforeSend: function ( xhr ) {
xhr.setRequestHeader( 'X-WP-Nonce', wpApiSettings.nonce );
},
data:{
'title' : 'Hello'
}
} ).done( function ( response ) {
console.log( response );
} );
これで、「Hello」という投稿が下書き状態で投稿されます。
なお、このスクリプトは WordPressのテーマファイル内でのみ動作し、また WordPressにログインしている状態でのみ動作します。もし、外部のサイトやアプリなどから REST APIを利用する場合は、別途 OAuth認証などを行なう必要があるようです。こちらも追って試してみたいと思います。