Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WP-API攻略
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Takayuki Miyauchi
October 08, 2017
Technology
4.8k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WP-API攻略
PHPカンファレンス2017での資料です。
Takayuki Miyauchi
October 08, 2017
More Decks by Takayuki Miyauchi
See All by Takayuki Miyauchi
Geolonia のデータ連携基盤とスマートシティ構想
miya0001
1
310
データ連携基盤としてのベクトルタイル
miya0001
1
280
不動産に関連しそうなデータもろもろ
miya0001
0
140
Geolonia Maps for SmartCity
miya0001
0
960
ベクトルタイルで見えてきたデジタル地図の未来
miya0001
0
360
不動産IDの仕組みと今後の課題
miya0001
0
370
オープンソースでつくるオープンソースっぽい地図の会社の挑戦
miya0001
0
320
ITエンジニアのための住所システムのお話
miya0001
1
270
TileCloudの裏側
miya0001
0
460
Other Decks in Technology
See All in Technology
[DroidKaigi 2026] Making UI specifications visible: Android UI development in the AI agent era supported by Compose Screenshot Testing and galleries
syarihu
0
530
Jetpack Compose で挑む新聞紙面UI ─ 複合ジェスチャー・ポリゴン記事領域・適応的ページ構成という3つの壁/droidkaigi2026
nikkei_engineer_recruiting
0
190
DGX Sparkを2台使って いろいろ動かす話
sonoda_mj
1
120
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
2
2.1k
最新技術に積極チャレンジ!EKS共通基盤のこれまでとこれから
daitak
0
300
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
230
魔法少女がClaude Codeを監視する / ccportal-deck
noriyukitakei
3
130
[RSJ26] AnoleVLA: Lightweight Vision-Language-Action Model with Deep State Space Models for Mobile Manipulation
keio_smilab
PRO
0
120
Genie Code ワークショップ 応用編 / Genie-Code-Workshop-advanced
databricksjapan
PRO
0
310
Claude Codeで開発以外の業務も爆速化しよう!
minorun365
PRO
12
9.6k
いま、生成AIにKaggleをどこまで 任せられるか — ROGIIコンペでの進め方とTips
k951286
2
1.3k
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
220
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7.1k
ラッコキーワード サービス紹介資料
rakko
1
4.7M
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Believing is Seeing
oripsolob
1
210
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
450
We Are The Robots
honzajavorek
0
330
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Skip the Path - Find Your Career Trail
mkilby
1
220
Navigating Team Friction
lara
192
16k
Transcript
81"1*పఈ߈ུ PHPΧϯϑΝϨϯε 2017 ٶ ོߦ @miya0001
None
None
None
None
None
ࠓͷΞδΣϯμ
w 81"1*ͱʁ w άϩʔόϧύϥϝʔλ w ϖʔδωʔγϣϯ w ϑΟϧλʔ w ΧελϜߘλΠϓΛಠࣗΤϯυϙΠϯτͱͯ͠Ճ
w ΧελϜϑΟʔϧυͷՃ w ೝূ w Ϣχοτςετ w ΫϥΠΞϯτϥΠϒϥϦʢ+BWB4DSJQUʣ
81"1*ͱʁ
w 3&45GVM"1* w 8PSE1SFTTͷ(6*ͱͷ༥߹ʹΑΔͳΜͰ"1*ڥ w 8PSE1SFTTϓϥάΠϯʹΑΔ֦ுੑ w ΦʔτσΟεΧόϦ
ΤϯυϙΠϯτ /wp-json/wp/v2 /wp-json/wp/v2/posts /wp-json/wp/v2/categories /wp-json/wp/v2/revisions /wp-json/wp/v2/tags /wp-json/wp/v2/pages /wp-json/wp/v2/comments /wp-json/wp/v2/taxonomies /wp-json/wp/v2/media
/wp-json/wp/v2/users /wp-json/wp/v2/types /wp-json/wp/v2/statuses /wp-json/wp/v2/settings
/wp-json/wp/v2 w ͜ͷΤϯυϙΠϯτͰ͕ͯ͢Θ͔Γ·͢ɻ w αϙʔτͯ͠ΔΤϯυϙΠϯτ w ͦΕͧΕͷΤϯυϙΠϯτ͕ͲͷϝιουΛαϙʔτ͠ ͍ͯΔ͔ʁ w ͲΜͳύϥϝʔλΛαϙʔτ͍ͯ͠Δ͔ʁ
υΩϡϝϯτͷҰ෦ ͜ͷΤϯυϙΠϯτ͔Βࣗಈੜ͍ͯ͠·͢ɻ
ΦʔτσΟεΧόϦ $ http HEAD http://wp-api.test/wp-json/ HTTP/1.1 200 OK Access-Control-Allow-Headers: Authorization,
Content-Type Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages Allow: GET Connection: close Content-Type: application/json; charset=UTF-8 Date: Sat, 07 Oct 2017 23:16:58 GMT Link: <http://wp-api.test/wp-json/>; rel="https://api.w.org/" Server: Apache/2.4.18 (Ubuntu) X-Content-Type-Options: nosniff X-Robots-Tag: noindex 8PSE1SFTTʹؔ࿈͢ΔͳΜΒ͔ͷαʔϏεΛ։ൃ͢Δ߹ɺ ϨεϙϯεϔομʔͷA-JOLAΛνΣοΫʂ
άϩʔόϧύϥϝʔλ
_jsonp /wp/v2/posts?_jsonp=hello ΫϩευϝΠϯͰίϯςϯπΛ࠶ར༻͢Δ͜ͱ͕Մೳʹɻ
_method /wp-json/wp/v2/posts/42?_method=DELETE ͋ΔಛఆͷϝιουʹରԠ͍ͯ͠ͳ͍ΫϥΠΞϯτͱͷޓੑͷͨΊʹ ϦΫΤετϝιουΛ্ॻ͖͢Δ͜ͱ͕Մೳɻ ͨͩ͠ɺPOSTͰϦΫΤετ͢Δ͜ͱɺೝূ͕ඞཁͳͲͷ੍͕͋Γ·͢ɻ POST /wp-json/wp/v2/posts/42 HTTP/1.1 Host: example.com
X-HTTP-Method-Override: DELETE X-HTTP-Method-Override ϔομʔͰಉ͜͡ͱ͕Մೳ
_envelope /wp-json/wp/v2/posts/42?_envelope HTTPϨεϙϯεϔομΛਖ਼͘͠ղऍͰ͖ͳ͍ΫϥΠΞϯτͷͨΊʹ Ϩϯεϙϯεϔομʔͷ༰ΛJSONʹؚΊͯฦ͢ɻ HTTPεςʔλείʔυ͕200ʹͳΔΘΓʹ JSONʹΤϥʔ͕֨ೲ͞Εͯฦ٫͞Ε·͢ɻ $ curl --dump-header -
http://.../posts/1111?_envelope HTTP/1.1 200 OK
_embed /wp-json/wp/v2/posts/42?_embed ͦͷΦϒδΣΫτʹؔ࿈͢ΔΦϒδΣΫτऔಘ͢ΔͨΊͷύϥϝʔλɻ ͨͱ͑ߘͰ͋ΕΞΠΩϟονը૾ɻ ݻఆϖʔδͰ͋ΕϖʔδͷϦϯΫͳͲɻ
ϖʔδωʔγϣϯ
ύϥϝʔλ ༻్ ?page= ϖʔδͷ൪߸Λࢦఆ ?per_page= 1ϖʔδ͋ͨΓͷΦϒδΣΫτΛࢦఆɻ ࠷େ100ɻ ?offset= ΦϒδΣΫτͷΦϑηοτΛࢦఆɻ +40/ͷA981505"-AٴͼA9815PUBM1BHFTAʹ
ΦϒδΣΫτͷ૯ͱ૯ϖʔδؚ͕·Ε͍ͯ·͢ɻ APSEFSAٴͼAPSEFSCZAͰιʔτՄೳɻ
ϑΟϧλʔ
ʁpMUFS<DBUFHPSZ@OBNF>VODBUFHPSJ[FE 81"1*ͷϕʔλςετͰఏڙ͞Ε͍ͯͨpMUFSύϥϝʔλɺ େͳϢʔεέʔεʹԠ͑Δ͜ͱ͕ࠔͳ͜ͱɻ σϑΥϧτͰ༗ޮԽ͢ΔʹηΩϡϦςΟ্ͷݕ౼ࣄ߲͕ଟ͍͜ͱɻ ͳͲΛཧ༝ʹίΞʹϚʔδ͢Δ࣌Ͱআ͞Ε·ͨ͠ɻ https://github.com/WP-API/rest-filter ݱࡏϓϥάΠϯͱͯ͠ఏڙ͞Ε͍ͯ·͢ɻ ͨͩ͠શͰͳ͍
ಠࣗΤϯυϙΠϯτ
wp scaffold post-type <slug> REST APIʹରԠͨ͠ΧελϜߘλΠϓΛ ίϚϯυҰൃͰੜͰ͖·͢ɻ
register_rest_route( 'rad/v1', 'site-info', array( array( 'methods' => 'GET', 'callback' =>
function( $request ) { return array( 'phone_number' => get_option( 'phone_number' ), ); }, ), array( 'methods' => 'POST', 'callback' => function( $request ) { update_option( 'phone_number', $request['phone_number'] ); return array( 'phone_number' => get_option( 'phone_number' ), ); }, ), ) ); `register_rest_route()` ΛͬͯΦϦδφϧAPIΛ࡞Δྫ
array( 'methods' => 'POST', 'callback' => function( $request ) {
update_option( 'phone_number', $request['phone_number'] ); return array( 'phone_number' => get_option( 'phone_number' ), ); }, 'permission_callback' => function() { if ( current_user_can( 'manage_options' ) ) { return true; } return new WP_Error( 'rad_unauthorized', 'You do not have permission to update this resource.', array( 'status' => is_user_logged_in() ? 403 : 401 ) ); }, ), ೝূΛ͚ͭΔ߹ `permission_callback`
ΧελϜϑΟʔϧυ
add_action( 'rest_api_init', function() { register_rest_field( 'poi', 'poi', array( 'get_callback' =>
function( $object ) { $meta = get_post_meta( $object['id'], '_addr', true ); return array( 'address' => $meta ); }, 'schema' => null, ) ); } ); ΧελϜϑΟʔϧυͷσϑΥϧτͰAPIʹؚ·Ε·ͤΜɻ ʢηΩϡϦςΟ্ॏཁͳใؚ͕·ΕΔ͜ͱ͕ఆ͞ΕΔͨΊʣ ্ͷྫɺ`_addr` ͱ͍͏ΧελϜϑΟʔϧυͷΛ `address` ͱ͍͏εΩʔϚͰAPIʹؚΊΔྫɻ
ೝূ
https://wordpress.org/plugins/rest-api-oauth1/
Ϣχοτςετ
ࣄނࢭͷͨΊʹ"1*ΛΧελϚΠζ͢Δͱ͖ ςετΛॻ͖·͠ΐ͏ʂ
https://github.com/danielbachhuber/pantheon-rest-api-demo
ࢀߟ
https://developer.wordpress.org/rest-api/
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ