Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
WP-API攻略
Search
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 の開発現場における AIの活用について
miya0001
0
130
Geolonia のデータ連携基盤とスマートシティ構想
miya0001
1
330
データ連携基盤としてのベクトルタイル
miya0001
1
290
不動産に関連しそうなデータもろもろ
miya0001
0
180
Geolonia Maps for SmartCity
miya0001
0
990
ベクトルタイルで見えてきたデジタル地図の未来
miya0001
0
370
不動産IDの仕組みと今後の課題
miya0001
0
380
オープンソースでつくるオープンソースっぽい地図の会社の挑戦
miya0001
0
330
ITエンジニアのための住所システムのお話
miya0001
1
280
Other Decks in Technology
See All in Technology
AIエージェントに業務知識を届ける仕組みづくり - Knowledge Catalogを活用した知識基盤の構築
hekuchan
0
120
Software Engineering in an AI-Driven World
erikjhordan_rey
0
110
Copilot Coworkで「みのるん式」やってみた
minorun365
PRO
2
1.5k
cdkd (CDK Direct)
gotok365
3
200
AIで選択肢が広がった組織設計の理想と現実
konifar
16
7.7k
re:Inventで、人生は変わったのか? / growth-builders-hub-1-reinvent-2026
mhrtech
2
310
kintoneで在庫管理システムを作るときの要件定義・設計ポイント
kai0707
0
230
Building Audio Plugin Ecosystem for Android in 2026
atsushieno
2
140
コードレビューをなくして見えたもの
henteko
0
130
増え続けるプロダクトの品質をどう担保するか。ProductSpecとTypeScriptによる取り組み
joere
3
380
AWSを利用する上で知っておきたい名前解決の話 2026
nagisa53
1
260
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
790
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
470
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
520
Optimising Largest Contentful Paint
csswizardry
37
4k
Utilizing Notion as your number one productivity tool
mfonobong
4
640
Claude Code のすすめ
schroneko
67
230k
4 Signs Your Business is Dying
shpigford
187
23k
HDC tutorial
michielstock
2
1k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
460
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
790
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
560
How to Talk to Developers About Accessibility
jct
2
610
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/
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ