More Related Content Similar to WordBench京都12月、WordCampUSからのWP REST APIな話 (20) More from Hidetaka Okamoto (20) WordBench京都12月、WordCampUSからのWP REST APIな話18. WordBench京都12月
CALYPSO
▸ React + WordPress.com API
▸ WordPressのダッシュボードアプリ
▸ UIはWordPress.com風
▸ https://developer.wordpress.com/calypso/
▸ https://github.com/Automattic/wp-calypso
23. WordBench京都12月
プラグイン対応表
API名 プラグイン名 URL 備考
.com API JetPack
https://wordpress.org/
plugins/jetpack/
.comアカウント
必須
WP REST
API v1
WP REST API
(WP API)
https://wordpress.org/
plugins/json-rest-api/
WP REST
API v2
WordPress REST
API (Version 2)
https://wordpress.org/
plugins/rest-api/
一部コア実装
(WP4.4~)
WP API WP API
https://wordpress.org/
plugins/wp-api/
4年以上
メンテなし
25. WordBench京都12月
ここで書くネタ
▸ WP APIとは? WordPressのコア部分のAPI
▸ プラグインで開発されていて、今はVersion2
▸ WP4.2に入ると言われてから約1年、ついにコア実装
▸ OmEmbedで使われてる、camp.orgはv1カスタマイズ
▸ ただし自分で使うにはプラグイン必要よ
▸ V1とV2の違いを一部紹介(フック・エンドポイント)
26. WordBench京都12月
WP REST APIとは?
▸ WordPressのコア部分のAPI
▸ 投稿 / 固定ページ / メディア / ユーザー / etc..
▸ WordPress4.2でコアに入ると言われてから約1年
▸ WP4.4で一部機能がコアに実装
▸ 全機能を使うにはプラグインが必要
35. curl -X GET
http://example.com/wp-json/wp/v2/
| jq .
37. WordBench京都12月
WordPress4.4 コアで使えるエンドポイント
"/wp/v2/comments": {
"namespace": "wp/v2",
"methods": [ "GET", "POST" ],
"endpoints": [
{
"methods": [ "GET" ],
"args": {
"context": {
"required": false,
"default": "view",
"enum": [ "view", "embed", "edit" ],
"description": "Scope under which the request is made; determines fields present
in response."
},
"page": {
38. WordBench京都12月
エンドポイントのURL
"/wp/v2/comments": {
"namespace": "wp/v2",
"methods": [ "GET", "POST" ],
"endpoints": [
{
"methods": [ "GET" ],
"args": {
"context": {
"required": false,
"default": "view",
"enum": [ "view", "embed", "edit" ],
"description": "Scope under which the request is made; determines fields present
in response."
},
"page": {
39. WordBench京都12月
このエンドポイントで使えるメソッド
"/wp/v2/comments": {
"namespace": "wp/v2",
"methods": [ "GET", "POST" ],
"endpoints": [
{
"methods": [ "GET" ],
"args": {
"context": {
"required": false,
"default": "view",
"enum": [ "view", "embed", "edit" ],
"description": "Scope under which the request is made; determines fields present
in response."
},
"page": {
40. WordBench京都12月
GETで使えるクエリとその説明
"/wp/v2/comments": {
"namespace": "wp/v2",
"methods": [ "GET", "POST" ],
"endpoints": [
{
"methods": [ "GET" ],
"args": {
"context": {
"required": false,
"default": "view",
"enum": [ "view", "embed", "edit" ],
"description": "Scope under which the request is made; determines fields present
in response."
},
"page": {
43. WordBench京都12月
var url = 'http://wp-kyoto.net/wp-json/';
$.ajax({
url: url + ‘wp/v2/posts', type:’GET’, dataType: 'json',
data : { filter: { s: ‘wp-api', posts_per_page: 5 }
},
timeout:10000,
}).done(function(datas) {
for (var i = datas.length - 1; i >= 0; i--) {
var post_url = datas[i]['link'];
$.ajax({
url: url + 'oembed/1.0/embed?url='+ post_url,
type:’GET', dataType: ‘json', timeout:10000,
}).done(function(data) {$('#ajax').append(data['html']);
}).fail(function(data) { $('#ajax').append('fail');});
}
}).fail(function(datas) {
$('#ajax').append('fail');
});
44. WordBench京都12月
var url = 'http://wp-kyoto.net/wp-json/';
$.ajax({
url: url + ‘wp/v2/posts', type:’GET’, dataType: 'json',
data : { filter: { s: ‘wp-api', posts_per_page: 5 }
},
timeout:10000,
}).done(function(datas) {
for (var i = datas.length - 1; i >= 0; i--) {
var post_url = datas[i]['link'];
$.ajax({
url: url + 'oembed/1.0/embed?url='+ post_url,
type:’GET', dataType: ‘json', timeout:10000,
}).done(function(data) {$('#ajax').append(data['html']);
}).fail(function(data) { $('#ajax').append('fail');});
}
}).fail(function(datas) {
$('#ajax').append('fail');
});
POSTSを取得するAPIから記事データを5件取得
45. WordBench京都12月
var url = 'http://wp-kyoto.net/wp-json/';
$.ajax({
url: url + ‘wp/v2/posts', type:’GET’, dataType: 'json',
data : { filter: { s: ‘wp-api', posts_per_page: 5 }
},
timeout:10000,
}).done(function(datas) {
for (var i = datas.length - 1; i >= 0; i--) {
var post_url = datas[i]['link'];
$.ajax({
url: url + 'oembed/1.0/embed?url='+ post_url,
type:’GET', dataType: ‘json', timeout:10000,
}).done(function(data) {$('#ajax').append(data['html']);
}).fail(function(data) { $('#ajax').append('fail');});
}
}).fail(function(datas) {
$('#ajax').append('fail');
});
oEmbedのAPIをAjaxで呼び出す
46. WordBench京都12月
var url = 'http://wp-kyoto.net/wp-json/';
$.ajax({
url: url + ‘wp/v2/posts', type:’GET’, dataType: 'json',
data : { filter: { s: ‘wp-api', posts_per_page: 5 }
},
timeout:10000,
}).done(function(datas) {
for (var i = datas.length - 1; i >= 0; i--) {
var post_url = datas[i]['link'];
$.ajax({
url: url + 'oembed/1.0/embed?url='+ post_url,
type:’GET', dataType: ‘json', timeout:10000,
}).done(function(data) {$('#ajax').append(data['html']);
}).fail(function(data) { $('#ajax').append('fail');});
}
}).fail(function(datas) {
$('#ajax').append('fail');
});
oEmbedのAPIをAjaxで呼び出す
47. WordBench京都12月
var url = 'http://wp-kyoto.net/wp-json/';
$.ajax({
url: url + ‘wp/v2/posts', type:’GET’, dataType: 'json',
data : { filter: { s: ‘wp-api', posts_per_page: 5 }
},
timeout:10000,
}).done(function(datas) {
for (var i = datas.length - 1; i >= 0; i--) {
var post_url = datas[i]['link'];
$.ajax({
url: url + 'oembed/1.0/embed?url='+ post_url,
type:’GET', dataType: ‘json', timeout:10000,
}).done(function(data) {$('#ajax').append(data['html']);
}).fail(function(data) { $('#ajax').append('fail');});
}
}).fail(function(datas) {
$('#ajax').append('fail');
});
oEmbedのAPIでとれたHTMLを挿入する
55. WordBench京都12月
WP REST API × SOMETHING
▸ WP REST API × Plugins
▸ WP REST API × Themes
▸ WP REST API × Application
▸ WP REST API × Other API
▸ WP REST API × Internet Of Things
61. WordBench京都12月
WP REST API × THEMES
▸ WP REST API を使ったWordPressテーマ
▸ WP REST API v2必須のテーマは公式OK
▸ Reactやbackboneでテーマを作る?
▸ PHPなしでテーマ作成も可能