99
WORDCAMP US参加レポート WORDBENCH京都12

WordBench京都12月、WordCampUSからのWP REST APIな話

Embed Size (px)

Citation preview

Page 1: WordBench京都12月、WordCampUSからのWP REST APIな話

WORDCAMP US参加レポート WORDBENCH京都12月

Page 2: WordBench京都12月、WordCampUSからのWP REST APIな話

WORDCAMP US参加レポート ~という名のWP REST APIの話~

WORDBENCH京都12月

Page 3: WordBench京都12月、WordCampUSからのWP REST APIな話

WORDCAMP US2015/12/04~12/06

Page 4: WordBench京都12月、WordCampUSからのWP REST APIな話

実はあんまり セッション聞いてない

Page 5: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 6: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WORDCAMP US2015私的サマリー

▸わぷー人気過ぎ

▸WordPress.com API

▸WP REST API

▸WP REST API

Page 7: WordBench京都12月、WordCampUSからのWP REST APIな話

GLOBAL WAPUU

わぷー人気出過ぎ

Page 8: WordBench京都12月、WordCampUSからのWP REST APIな話

WORDBENCH京都12月テキスト

わぷーってなに?▸ 日本語版公式キャラクター

▸ カネウチカズコさんによるデザイン

▸ GPL v2で利用可能

▸ ご当地わぷーが沢山いる

▸ 2014年末頃から海外でブームに

▸ (ボールは齧ってるらしい)

https://ja.wordpress.org/about-wp-ja/wapuu/

Page 9: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

http://jawordpressorg.github.io/wapuu/

Page 10: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

GitHubに世界中のわぷーが登録されている

https://github.com/jawordpressorg/wapuu

Page 11: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

突如現れたファンサイト

http://wapuu.jp/

Page 12: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 13: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

スペースわぷー

http://wapuu.amimoto-ami.com/

Page 14: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 15: WordBench京都12月、WordCampUSからのWP REST APIな話

WordPress.com API

すべては ここからはじまった

Page 16: WordBench京都12月、WordCampUSからのWP REST APIな話

CALYPSO

Page 17: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 18: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

CALYPSO

▸ React + WordPress.com API

▸WordPressのダッシュボードアプリ

▸ UIはWordPress.com風

▸ https://developer.wordpress.com/calypso/

▸ https://github.com/Automattic/wp-calypso

Page 19: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 20: WordBench京都12月、WordCampUSからのWP REST APIな話

https://developer.wordpress.com/docs/api/

Page 21: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WORDPRESS.COM REST API

▸WordPress.comのAPI

▸ JetPackやCalypsoで使用

▸ .orgで使うにはJetPackが必要

▸WP REST APIとは別物なので要注意

▸ https://developer.wordpress.com/docs/api/

Page 22: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WP REST APIと混同すると辛くなる

▸WP REST APIと.com APIは別物

▸WP REST APIもv1とv2は別物

▸「WP API」という別物のプラグインもある

▸試す時には「どれを使うのか」を確認しよう!

Page 23: WordBench京都12月、WordCampUSからのWP REST APIな話

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年以上 メンテなし

Page 24: WordBench京都12月、WordCampUSからのWP REST APIな話

WP-APIついにコア実装

Page 25: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

ここで書くネタ▸ WP APIとは? WordPressのコア部分のAPI

▸ プラグインで開発されていて、今はVersion2

▸ WP4.2に入ると言われてから約1年、ついにコア実装

▸ OmEmbedで使われてる、camp.orgはv1カスタマイズ

▸ ただし自分で使うにはプラグイン必要よ

▸ V1とV2の違いを一部紹介(フック・エンドポイント)

Page 26: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WP REST APIとは?

▸ WordPressのコア部分のAPI

▸ 投稿 / 固定ページ / メディア / ユーザー / etc..

▸ WordPress4.2でコアに入ると言われてから約1年

▸ WP4.4で一部機能がコアに実装

▸ 全機能を使うにはプラグインが必要

Page 27: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WordPress4.4 コアに実装されたREST API

▸ oEmbedを実装するためのAPI

▸ 今まで話題になっていたAPIエンドポイントは入ってない

▸ ただしフックなどは追加されているので

 オリジナルのエンドポイントを追加することは可能

Page 28: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WordPress4.4 コアで使えるエンドポイント

▸ /wp-json/

▸ WP APIに関する各種情報をとれるエンドポイント

▸ /wp-json/oembed/1.0

▸ oEmbed用APIに関する情報をとれるエンドポイント

▸ /wp-json/oembed/1.0/embed

▸ oEmbedで実際に使われているエンドポイント

Page 29: WordBench京都12月、WordCampUSからのWP REST APIな話

oEmbedしか 使えない

Page 30: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WP REST API v2を入れると使えるエンドポイント(一部)

▸ /wp-json/wp/v2/       :ルート情報

▸ /wp-json/wp/v2/categories  :カテゴリ

▸ /wp-json/wp/v2/media    :メディア

▸ /wp-json/wp/v2/pages    :固定ページ

▸ /wp-json/wp/v2/posts     :投稿

▸ /wp-json/wp/v2/tags     :タグ

▸ /wp-json/wp/v2/taxonomies  :タクソノミー

▸ /wp-json/wp/v2/users     :ユーザー

Page 31: WordBench京都12月、WordCampUSからのWP REST APIな話

使える メソッドなど

Page 32: WordBench京都12月、WordCampUSからのWP REST APIな話

http://v2.wp-api.org/

Page 33: WordBench京都12月、WordCampUSからのWP REST APIな話

ドキュメント読むの めんどくさい

Hidetaka Okamoto

WordBench京都12月

Page 34: WordBench京都12月、WordCampUSからのWP REST APIな話

そんな時の ルートエンドポイント

Page 35: WordBench京都12月、WordCampUSからのWP REST APIな話

curl -X GET \ http://example.com/wp-json/wp/v2/ \ | jq .

Page 36: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 37: WordBench京都12月、WordCampUSからのWP REST APIな話

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": {

Page 38: WordBench京都12月、WordCampUSからのWP REST APIな話

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": {

Page 39: WordBench京都12月、WordCampUSからのWP REST APIな話

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": {

Page 40: WordBench京都12月、WordCampUSからのWP REST APIな話

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": {

Page 41: WordBench京都12月、WordCampUSからのWP REST APIな話

curlとjq使えると いろいろ捗る

Page 42: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 43: WordBench京都12月、WordCampUSからのWP REST APIな話

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'); });

Page 44: WordBench京都12月、WordCampUSからのWP REST APIな話

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件取得

Page 45: WordBench京都12月、WordCampUSからのWP REST APIな話

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で呼び出す

Page 46: WordBench京都12月、WordCampUSからのWP REST APIな話

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で呼び出す

Page 47: WordBench京都12月、WordCampUSからのWP REST APIな話

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を挿入する

Page 48: WordBench京都12月、WordCampUSからのWP REST APIな話

https://feelingrestful.com/

Page 49: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 50: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 51: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 52: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 53: WordBench京都12月、WordCampUSからのWP REST APIな話

WP-API結局どう使うのさ?

Page 54: WordBench京都12月、WordCampUSからのWP REST APIな話

で、WP REST APIとやらは どう使えと?

Someone

WordBench京都12月

Page 55: WordBench京都12月、WordCampUSからのWP REST APIな話

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

Page 56: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WP REST API × PLUGINS

▸WP REST APIを使ったプラグイン

▸非同期検索

▸記事埋め込みショートコード

▸ユーザー登録・コメント投稿機能

Page 57: WordBench京都12月、WordCampUSからのWP REST APIな話

https://wordpress.org/plugins/wp-search-live/

Page 58: WordBench京都12月、WordCampUSからのWP REST APIな話

http://wp-kyoto.net/using-wp-api-shortcode-wbnara/

Page 59: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 60: WordBench京都12月、WordCampUSからのWP REST APIな話

WP REST API v1 なので要注意

Page 61: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WP REST API × THEMES

▸WP REST API を使ったWordPressテーマ

▸WP REST API v2必須のテーマは公式OK

▸ Reactやbackboneでテーマを作る?

▸ PHPなしでテーマ作成も可能

Page 62: WordBench京都12月、WordCampUSからのWP REST APIな話

wptavern.com/anadama-an-example-wordpress-recipe-theme-based-on-react

Page 63: WordBench京都12月、WordCampUSからのWP REST APIな話

http://media-assembly-kit.com/ja/

Page 64: WordBench京都12月、WordCampUSからのWP REST APIな話

https://github.com/Automattic/Picard

Page 65: WordBench京都12月、WordCampUSからのWP REST APIな話

PHP苦手でもJS書ければ 公式ディレクトリに テーマをあげれるように

Page 66: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WP REST API × APPLICATION

▸WP REST APIを使ったアプリケーション

▸ユーザー・投稿・メディアなどを管理

▸WordPress をアプリケーションFW化する

Page 67: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 68: WordBench京都12月、WordCampUSからのWP REST APIな話

http://www.happytables.com/

Page 69: WordBench京都12月、WordCampUSからのWP REST APIな話

https://nomadbase.io/

Page 70: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WP REST API × IOT

▸ Internet Of Things(モノのインターネット)

▸マイコンからWP REST APIを使用する

▸「GUIすら存在しないWordPress」

Page 71: WordBench京都12月、WordCampUSからのWP REST APIな話

https://ja.wordpress.org/plugins/littlebits/

Page 72: WordBench京都12月、WordCampUSからのWP REST APIな話

https://ja.wordpress.org/plugins/littlebits/

Page 73: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 74: WordBench京都12月、WordCampUSからのWP REST APIな話

WordPressの リアルダッシュボード

Page 75: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 76: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 77: WordBench京都12月、WordCampUSからのWP REST APIな話

他Webサービスから WordPressを更新

Page 78: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 79: WordBench京都12月、WordCampUSからのWP REST APIな話

https://developer.amazon.com/appsandservices/solutions/alexa/alexa-skills-kit/docs/developing-an-alexa-skill-as-a-lambda-function

Page 80: WordBench京都12月、WordCampUSからのWP REST APIな話

音声入力から AWS経由で WodPressを操作

Page 81: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 82: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 83: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 84: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 85: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

ここで書くネタ▸ WordCamp USのセッションから活用アイディアを紹介

▸ テーマに使う  _s+backbone / React 他GitHubサンプル

▸ プラグインとして使う 検索・関連記事

▸ 管理画面に使う OAuth認証、HappyTable

▸ あぷりけーしょん nomadobase、

▸ Internet Of Things Alexa,littlebits,IFTTT

Page 86: WordBench京都12月、WordCampUSからのWP REST APIな話

まとめさらばPHP・・・?

Page 87: WordBench京都12月、WordCampUSからのWP REST APIな話

LEARN JAVASCRIPT DEEPLY.

Matt Mullenweg

WordBench京都12月

Page 88: WordBench京都12月、WordCampUSからのWP REST APIな話

だけど、

Page 89: WordBench京都12月、WordCampUSからのWP REST APIな話

PHPは 無くならない

Page 90: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WP REST APIは万能薬ではない

▸WP REST APIでは取れないデータも多い

▸メニュー・ウィジェット・基本設定etc..

▸ APIをいっぱい使う=サーバー負荷上がる

▸レガシーブラウザの悪夢

▸ APIのカスタマイズ=PHPを書く

Page 91: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WordPress関数との協力プレイ

▸APIで取れないものはPHPで

▸APIでとれるものはJavaScript

▸サーバーとブラウザでの処理の分散

▸遅延読み込みや仮想DOMの活用

Page 92: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

管理画面の設定を活かす▸ get_options()でデータ取得

▸ HTMLのdata属性に出力

▸ JSで取得してAPI処理に利用

▸ http://wp-kyoto.net/wp-rest-api-get-posts-per-page/

Page 93: WordBench京都12月、WordCampUSからのWP REST APIな話

WebComponent というまだ見ぬ未来

Page 94: WordBench京都12月、WordCampUSからのWP REST APIな話

WordBench京都12月

WEBCOMPONENT+WP REST API

▸ HTMLの要素を「パーツ化」して独自タグにできる

▸ うまく使えばJavaScriptすらほとんど書かずに済む

▸ フロントエンドをComponent化

▸ Componentを仕様に合わせて並べていく

▸ あとはWP REST APIからデータを流し込むだけ

Page 95: WordBench京都12月、WordCampUSからのWP REST APIな話

なんて将来が きたらいいよね

Page 96: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 97: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 98: WordBench京都12月、WordCampUSからのWP REST APIな話
Page 99: WordBench京都12月、WordCampUSからのWP REST APIな話

時間が余ったら US参加組を巻き込ます

Hidetaka Okamoto

WordBench京都12月