WordPress has an app. That means there’s an API to normalize communication using a predictable programmatic interface. In this case, as with many others, that’s done using a standard REST interface to communicate. The easiest way to interact with any API is to just read some stuff from the server via curl. You can feed curl the URL to the API by using your URL followed by /wp-json – as follows, assuming a URL of https://www.krypted.com:
curl https://krypted.com//wp-json
To view header information:
curl -s -D - https://krypted.com/ -o /dev/null
In the below example we’ll ask for a list of posts by adding /wp/v2/posts to the URL:
curl https://krypted.com//wp-json/wp/v2/posts
You’ll see a list of some posts in the output along with a little metadata about the posts. You can then grab an ID and ask for just that post, using a post ID of 48390:
curl https://krypted.com//wp-json/wp/v2/posts/48390
You can also see revisions that have been made to a post by appending the URL with /revisions
curl https://krypted.com//wp-json/wp/v2/posts/48390/revisions
You can see comments with the comments route:
curl https://krypted.com//wp-json/wp/v2/comments
Or pages with the pages route:
curl https://krypted.com//wp-json/wp/v2/pages
Or users with the users route:
curl https://krypted.com//wp-json/wp/v2/users
Or media that has been uploaded with the media route:
curl https://krypted.com//wp-json/wp/v2/media
And the output of each can be constrained to a single item in that route by providing the ID of the item, which shows additional metadata about the specified item. And there are routes for categories, tags, etc.
There’s also some good stuff at https://github.com/WP-API such as https://github.com/WP-API/Basic-Auth which is a plugin that allows you to auth against the API.
curl --user admin:krypted https://krypted.com//wp-json/users/me
Not only can you look at user information, you can also add and remove posts. You would add by doing a -X followed by a POST and then feeding a file with the –data option
curl --user admin:password -X POST https://krypted.com//wp-json/posts --data @post.json
The output would then include the ID of your new post to wordpress. In the following example, we’ll get rid of the post we were looking at earlier using -X and DELETE in the URL, assuming a username of admin, a password of krypted, and a post ID of 48390:
curl --user admin:krypted -X DELETE https://krypted.com//wp-json/posts/48390
If successfully deleted the response would be as follows:
{
“message”:”Deleted post”
}
To dig in deeper, check out http://v2.wp-api.org/reference/posts/ where the whole schema is documented. You can also use the https://github.com/WP-API GitHub site to access a command called wp (as well as PHP, node, and java clients) that can be run at the command line for simple scripting interfaces. This could allow you to, for example, simply backup posts to json files, etc.
Also, it’s worth noting that various plugins will require their own interface (note there’s no themes or plugins route), such as woocommerce, interfacing with http://gerhardpotgieter.com/2014/02/10/woocommerce-rest-api-client-library/ or https://woocommerce.github.io/woocommerce-rest-api-docs/.