So what’s this new WordPress API
thing all about? Don’t we already have
Right now, we have XML-RPC.
Remote Procedural Call API’s are part of an old standard. They
are very difficult to use.
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.
• It’s simply a way to describe data that is lightweight and
extremely easy to use. Arguably much easier to use than
• 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
• 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
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).
What does the API let me to do?
Shows all the routes and endpoints available
Create, read, update, and delete posts
Create, read, update, and delete users
Create, read, update, and delete media items
Read taxonomies and terms
Create, read, update, and delete pages
The API is rich with functionality.
Explore the documentation!
The basic building block of
WordPress is the post.
Takes a number of useful parameters:
• Filter: Accepts WP_Query arguments
• Page: Allows for pagination
• Context: Determines usage context i.e. “view or edit”
Edit A Post
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
Create A Post
curl -X POST -H “Content-Type: application/json” -d ‘!
“content_raw": “Post content"!
‘ -u admin:password http://example.com/wp-json/posts/
Notice we are using a POST request this time.
Build Your Own Routes and Endpoints
WP API is very extensible
What can I do with the JSON
REST API for WordPress?