JSON { "ID": 4, "title": "My Awesome Post", "content": "This is my awesome content!" } JavaScript Object Notation • Supported by basically everything • Human readable • Standard
API Or extend as needed! GET POST PUT DELETE Posts ✔ ✔ ✔ ✔ Pages ✔ ✔ ✔ ✔ Custom Post Types ✔ ✔ ✔ ✔ Post Meta ✔ ✔ ✔ ✔ Media ✔ ✔ ✔ ✔ Comments ✔ ✔ Taxonomies/Terms ✔ ✔ ✔ ✔ Users ✔ ✔ ✔ ✔
Jetpack API Easy for developers Works with Javascript easily (JSON-based) Requires Jetpack active Depends on WordPress.com Does not work for local development Cannot control access to certain apps
[{ "ID": 110, "title": "Testing sticky", "status": "publish", "type": "post", "author": {}, "content": "this should be stuck as a post. Stuck on you.\n", "link": "http://local.wpapi.dev/testing-sticky/", "date": "2014-06-02T10:47:39-05:00", "modified": "2014-06-02T10:47:39-05:00", "format": "standard", "slug": "testing-sticky-2", "guid": "http://local.wpapi.dev/testing-sticky-2/", "excerpt": "this should be stuck as a post. Stuck on you.\n”, "comment_status": "open", "sticky": true, "meta": {}, "featured_image": null, "terms": {} }] /wp-json/posts GET
{ "ID": 1, "title": "Hello World!", "status": "publish", "type": "post", "author": {}, "content": "Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!\n", "link": "http://local.wpapi.dev/hello-world/", "date": "2014-04-18T15:14:46-05:00", "modified": "2014-05-02T01:26:30-05:00", "format": "standard", "slug": "hello-world", "guid": "http://local.wpapi.dev/?p=1", "excerpt": "Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!\n", "comment_status": "open", "meta": {}, "featured_image": null, "terms": {} } /wp-json/posts/1 GET
[{ "ID": 1, "post": 1, "content": "Hi, this is a comment. \nTo delete a comment, just log in and view the post's comments. There you will have the option to edit or delete them.\n", "status": "approved", "type": "comment", "author": { "ID": 0, "name": "Mr WordPress", "URL": "https://wordpress.org/", "avatar": "http://0.gravatar.com/avatar/ ad516503a11cd5ca435acc9bb6523536?s=96" }, "date": "2014-04-18T15:14:46-05:00", "meta": { "links": { "up": "http://local.wpapi.dev/wp-json/posts/1", "self": "http://local.wpapi.dev/wp-json/posts/1/comments/1" }}}] /wp-json/posts/1/comments GET
[{ "code": "json_user_cannot_list", "message": "Sorry, you are not allowed to list users." }] /wp-json/users GET GET /wp-json/posts/1/meta [{ "code": "json_cannot_edit", "message": "Sorry, you cannot edit this post” }]
curl -X POST -H "Content-Type: application/json" -d ' { "title":"Bears Beat the Packers ", "content_raw":"In the coldest game in recorded Bears history, the Packers traveled to Soldier Field, where a victory against the Bears would have ended their playoff hopes. The Bears had to rally from a 14–3 score at the half. The Bears were able to score after a turnover on a Packers punt return. The Packers were on the verge of finishing a game-winning drive when Mason Crosby\u2019s field goal attempt was blocked by Alex Brown, pushing the game to overtime. The Bears took the first possession in overtime and won the game on a 38-yard field goal by Robbie Gould.<\/p>", "status": "publish" "sticky": true, "post_meta" : [ { "key" : "game_score", "value" : "20-17" }, { "key" : "game_victor", "value" : "Chicago Bears" } ] } ' -u admin:password http://local.wpapi.dev/wp-json/posts/ /wp-json/posts GET POST Request Basic Auth
Use Cases: Perform CRUD operations on another WordPress site Display content from a separate WordPress site ! Display content from another site within a multisite network ! Manage (create, update, delete) content on a separate WordPress site or another site within a multisite network
Use Cases: Break your content free from WordPress Display and manage your content in a mobile application ! Integrate your content with other application platforms ! Integrate other application platforms with your WordPress site
Resources More about REST: http://www.restapitutorial.com/lessons/ whatisrest.html ! Postman HTTP Chrome Plugin: http://www.getpostman.com/ ! Paw HTTP App for OSX: http://luckymarmot.com/paw REST Information and Tools