+ All Categories
Home > Technology > JSON REST API for WordPress

JSON REST API for WordPress

Date post: 29-Nov-2014
Category:
Upload: taylor-lovett
View: 1,635 times
Download: 5 times
Share this document with a friend
Description:
Learn how to use the JSON REST API for WordPress
37
JSON REST API for WordPress @tlovett12 + JSON REST API =
Transcript
Page 1: JSON REST API for WordPress

JSON REST API for WordPress

@tlovett12

+ JSON REST API

=

Page 2: JSON REST API for WordPress

Who Am I?

• My name is Taylor Lovett!

• Director of Web Engineering at 10up

• Open source community member

• WordPress core contributor

• WP API team member

@tlovett12

Page 3: JSON REST API for WordPress

We are hiring!@tlovett12

Page 4: JSON REST API for WordPress

So what’s this new WP API thing all about? Don’t we already have one?

Page 5: JSON REST API for WordPress

Right now, we have XML-RPC. It works but is extremely hard to use and outdated.

Page 6: JSON REST API for WordPress

Comparison to other WordPress API’s !

https://github.com/WP-API/WP-API/blob/master/docs/comparison.md

Page 7: JSON REST API for WordPress

Why JSON REST API?

• In a nutshell, JSON REST API’s have swept the web becoming an almost standard. They are extremely intuitive and provide an easy way to distribute, collect, and modify data.

Let’s break it down a bit.

Page 8: JSON REST API for WordPress

JSON

• JSON is an abbreviation for “JavaScript Object Notation”

• It’s simply a way to describe data that is lightweight and extremely easy to use. Arguably much easier to use than XML.

Page 9: JSON REST API for WordPress

REST• REST (Representational State Transfer) is an architectural style

that dictates how HTTP and URI’s should be used and organized.

• Verbs and resources: GET /post/1

• Hypermedia as the Engine of Application State (HATEOAS) - Server provides everything you need to know how to use it in a response.

• Actions are autonomous and do not depend on each other.

• Bottom line: RESTful API’s have become extremely popular across the web. They are much easier to use than things like RPC or SOAP.

Page 10: JSON REST API for WordPress

And of course, API

• An API (Application Programming Interface) is a set of entry points that allow you to interact with a platform (WordPress in this case).

Page 11: JSON REST API for WordPress

Ryan McCue and Contributors

Page 12: JSON REST API for WordPress

How can I start using it now?

Page 13: JSON REST API for WordPress

First, install the plugin

http://wordpress.org/plugins/json-rest-api/ !

Core integration coming soon.

Page 14: JSON REST API for WordPress

What does the API allow me to do?

/wp-json/ Shows all the routes and endpoints available

/wp-json/posts Create, read, update, and delete posts

/wp-json/users Create, read, update, and delete users

/wp-json/media Create, read, update, and delete media items

/wp-json/taxonomies Read taxonomies and terms

/wp-json/pages/ Create, read, update, and delete pages

Page 15: JSON REST API for WordPress

The API is rich with functionality. Explore the documentation!

http://wp-api.org/docs-development/

Let’s look at a few key endpoints.

Page 16: JSON REST API for WordPress

List Posts

[{! "ID": 11297,! "title": "Post 19",! "status": "publish",! "type": "post",! "author": 1,! "content": "",! "parent": null,! "link": "http:\/\/example.com\/2014\/08\/post-19\/",! "format": "standard",! "slug": "post-19",! "guid": "http:\/\/example.com\/2014\/08\/post-19\/",! "excerpt": null,! "menu_order": 0,! "comment_status": "closed",! "ping_status": "open",! "sticky": false,! "meta": {},! "featured_image": null,! "terms": {}!}]

GET /wp-json/posts

Page 17: JSON REST API for WordPress

List PostsEndpoint: /wp-json/posts

Takes a number of useful parameters:

• Filter[]: Accepts WP_Query arguments

• Page: Allows for pagination

• Context: Determines usage context i.e. “view or edit”

• …

https://github.com/WP-API/WP-API/blob/master/docs/routes/routes.md

Page 18: JSON REST API for WordPress

Retrieve A Post

{! "ID": 11297,! "title": "Post 19",! "status": "publish",! "type": "post",! "author": 1,! "content": "",! "parent": null,! "link": "http:\/\/example.com\/2014\/08\/post-19\/",! "format": "standard",! "slug": "post-19",! "guid": "http:\/\/example.com\/2014\/08\/post-19\/",! "excerpt": null,! "menu_order": 0,! "comment_status": "closed",! "ping_status": "open",! "sticky": false,! "meta": {},! "featured_image": null,! "terms": {}!}

GET /wp-json/posts/<id>

Page 19: JSON REST API for WordPress

Edit A PostPUT /wp-json/posts/<id>

curl -X PUT -H “Content-Type: application/json” -d ‘!{! "title": “Updated Title",! “content_raw": “Updated post content"!}!‘ -u admin:password http://example.com/wp-json/posts/<id>

We need to send a PUT request to this endpoint with our post data. Of course we must authenticate before

doing this.

Page 20: JSON REST API for WordPress

Three ways to authenticate

• Cookie Authentication (client side)

• HTTP Basic Authentication

• OAuth 1

Page 21: JSON REST API for WordPress

HTTP Basic AuthenticationFirst install the WP Basic Auth Plugin:

https://github.com/WP-API/Basic-Auth

Remember this piece of our cURL request?

-u admin:password

That’s HTTP Basic Authentication! Essentially we are authenticating by passing an HTTP header like this:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Where that crazy looking string is username:password base64 encoded.

Page 22: JSON REST API for WordPress

HTTP Basic Authentication should only be used for testing!

Page 23: JSON REST API for WordPress

OAuth 1.0aFirst install the WP OAuth Plugin:

https://github.com/WP-API/OAuth1

OAuth is outside of the scope of this talk. However, it should be used instead of HTTP Basic Auth when building external applications that interact with the

API. Rather than giving someone an account on your site, you can give them temporary access with

OAuth.

Page 24: JSON REST API for WordPress

Create A PostPOST /wp-json/posts/

curl -X POST -H “Content-Type: application/json” -d ‘!{! "title": “Title",! “content_raw": “Post content"!}!‘ -u admin:password http://example.com/wp-json/posts/

Notice we are using a POST request this time.

Page 25: JSON REST API for WordPress

TaxonomiesGET /wp-json/taxonomies

[! {! "name": "Categories",! "slug": "category",! "labels": {},! "types": { /* Registered post types */ },! "show_cloud": true,! "hierarchical": true,! "meta": {}! },! {! "name": "Tags",! "slug": "post_tag",! "labels": {},! "types": { /* Registered post types */ },! "show_cloud": true,! "hierarchical": false,! "meta": {}! }! }!]

Page 26: JSON REST API for WordPress

TaxonomyGET /wp-json/taxonomies/<taxonomy>

{! "name": "Categories",! "slug": "category",! "labels": {},! "types": { /* Registered post types */ },! "show_cloud": true,! "hierarchical": true,! "meta": {}!}

Page 27: JSON REST API for WordPress

Taxonomy TermsGET /wp-json/taxonomies/<taxonomy>/terms

[! {! "ID": 1,! "name": "Books",! "slug": "books",! "description": "",! "parent": null,! "count": 1,! "link": "http:\/\/example.com\/category\/books\/",! "meta": {}! },! {! "ID": 2,! "name": "Products",! "slug": "products",! "description": "",! "parent": null,! "count": 1,! "link": "http:\/\/example.com\/category\/products\/",! "meta": {}! }!]

Page 28: JSON REST API for WordPress

Build Your Own Routes and Endpoints

WP API is very extensible (custom post types!)http://wp-api.org/guides/extending.html

Page 29: JSON REST API for WordPress

What can I do with the JSON REST API for WordPress?

Page 30: JSON REST API for WordPress

JavaScript

Interact with your (or someone else’s) WordPress install with JavaScript.

Backbone.js Client: https://github.com/WP-API/client-js

!!

Node.js Client: https://github.com/kadamwhite/wordpress-rest-api

!

Page 31: JSON REST API for WordPress

Backbone.js

• Backbone.js is a JavaScript framework that lets you structure code in terms of models, views, and collections. It works great with RESTful JSON API’s.

Page 32: JSON REST API for WordPress

_s_backbone

• _s or underscores is a popular starter theme by Automattic:https://github.com/automattic/_s

• _s_backbone is an _s fork that powers post loops using the WP API Backbone client

Page 33: JSON REST API for WordPress

https://github.com/tlovett1/_s_backbone

Page 34: JSON REST API for WordPress

What does this mean?

• It means _s_backbone is a starter theme with infinite scroll built-in using the WP API Backbone client.

• Infinite scroll is the concept of loading multiple rounds of entities without reloading the page.

Let’s look at some code!

Page 35: JSON REST API for WordPress

This is some JavaScript you could add to a theme or plugin to display your site’s posts. You will first need to have JSON REST API for WordPress installed and the “wp-api” JavaScript dependency enqueued.

functions.php:

js/scripts.js:

Page 36: JSON REST API for WordPress

If you learned nothing so far, know this:

You can do amazing things with the JSON REST API for WordPress.

With core integration and ~23% of the web using this API in the near future, you will have much easier access to data across the web.

Page 37: JSON REST API for WordPress

Questions?

We need to send a PUT request to this endpoint with our post data. Of course we must authenticate before

doing this.

@tlovett12!

[email protected]!

taylorlovett.com


Recommended