Rest API en WordPress


 

Desde la versión 4.7 ya tenemos integrada en WordPress la REST API de la que tanto se ha hablado pero no todo  el mundo va a usar la REST API ya que es algo más para los desarrolladores y  a día de hoy es algo que hacia falta y nos va a facilitar mucho la comunicación entre dispositivos y en el intercambio de datos.

Esta es una serie de Artículos sobre la Rest API de WordPress y como trabajar con ella. 

 

Introducción y que es una REST API

Una  REST API no es mas que una API basada en REST  y el formato de los datos se realiza en JSON, estos tres conceptos parecen chinos y redundantes pero vamos a explicarlo con un ejemplo.  

Cuando habéis entrado en esta página se ha producido una petición al servidor y este ha devuelto un código en html que nuestro navegador es capaz de interpretar. Si entráis aquí veréis una web con su contenido https://demo.wp-api.org/ pero si tuviéramos una aplicación móvil no queríamos cargar todo el contenido sino solo la información, por ejemplo artículos, menús ,…  esta información para una aplicación móvil sería mucho mejor que estuviera en un formato más sencillo y que se pudiera procesar y aquí es donde usamos JSON un formato en modo texto que podéis ver a continuación.

 

Vamos a ver como un ejemplo de url de la rest api de WordPress y explicar como se forma la  url:

http://demo.wp-api.org/wp-json/wp/v2/posts

  • http://demo.wp-api.org : Ejemplo de url tambien puede ser si trabajais en local http://localhost, .. o vuestro dominio
  • /wp-json: prefijo de la url de la WP REST API
  • /wp: nombre de la url
  • /v2: version de la WP REST API
  • /posts: recurso que pedimos

 

Si poneis en el navegador la siguiente url:  http://demo.wp-api.org/wp-json/wp/v2/posts

 

Veréis que os sale un chorro de texto, pero si usáis Chrome y tenéis alguna extensión como Json viewer o Json formatter podéis verlo como la siguiente captura.  

Y si quereis tener esa información en vuestra consola ( si teneis instalada las curl)  

 

curl -X OPTIONS -i http://demo.wp-api.org/wp-json/wp/v2/posts

 

Accederás igual a listado de artículos.

Pues este trozo de texto es el idoneo para utilizar en otro dispositivo, en una web.  

Esto tiene multiples aplicaciones como por ejemplo imaginar que quiero mostrar todos mis tweets en mi web o quiero entrar en meetup obtener la lista de miembros de una comunidad de WordPress y ponerla en una web.

 

 

Lo normal es que para utilizar contenidos de otros tengais que tener una autentificacion, sino cualquiera podria usar la informacion de otros.

 

Os recomiendo si teneis WordPress y no usais REST API instaleis un plugin para bloquearla.
Podeis hacerlo de forma manual añadiendo a vuestro tema o plugin las siguientes lineas:

add_filter(‘json_enabled’, ‘__return_false’);

add_filter(‘json_jsonp_enabled’, ‘__return_false’);

 

O mediante un plugin:   

 

https://es.wordpress.org/plugins/disable-json-api/

 

En mi caso la tengo abierta de momento 😛

 

Trabajando con la REST API:

No vamos a entrar en definición de REST pero si que vamos a entender los principios. A diferencia de proyectos orientados a servicios, en rest  lo que tenemos son Recursos.

Los recursos son sencillos y se utiliza JSON o XML para representar objetos y atributos.

La forma de comunicarse por HTTP es mediante unos métodos sencillos GET, POST, PUT y DELETE, no hay mas o al menos es la filosia principal.

 

Vamos a ver los métodos para un  CRUD (crear, recuperar, actualizar, eliminar) , solicitudes HTTP y para ello vamos a utlizar los post de WordPress

 

Listar los post o artículos

Las urls o rutas se forman de la siguiente manera:

MI DOMINIO + wp-json + url de la rest  wp/v2/posts

Ejemplo http://demo.wp-api.org/wp-json/wp/v2/posts  
donde v2 indica la versión, a futuro sera v3, v4,.. es la forma de escalar

 

Ejemplo de listar artículos o post
GET /wp/v2/posts
http://demo.wp-api.org/wp-json/wp/v2/posts

ejemplo de código

 

Si queremos añadir filtros podemos hacerlo de la siguiente manera

http://demo.wp-api.org/wp-json/wp/v2/posts?filter[posts_per_page]=2


Si queremos añadir varios filtros se puede anidar

http://demo.wp-api.org/wp-json/wp/v2/posts?filter[posts_per_page]=2&filter[order]=ASC

 

Si tenemos nuestros propios custom post types

http://demo.wp-api.org/wp-json/wp/posts?type[]=post&type[]=page
Ejemplo de búsqueda

http://demo.wp-api.org/wp-json/wp/v2/posts?filter[s]=Wordpress


Vamos a ver como listar un único  artículo ( el id se sustituye por un número)

GET /wp/v2/posts/<id>
http://demo.wp-api.org/wp-json/wp/v2/posts/<id>

ejemplo de codigo

 

Crear un post

Este cambia respecto a otros se utiliza POST en vez de GET ( muy importante)

Los argumentos son los campos que le pasamos como el titulo ,… y como vereis no añadimos el id porque vamos a crearlo 😛

 

POST /wp/v2/posts

 

Actualizar un post


POST /wp/v2/posts/<id>
curl -X POST http://demo.wp-api.org/wp-json -d ‘{“title”:”My New Title”}’

 

Borrar un post

DELETE /wp/v2/posts/<id>
curl -X DELETE http://demo.wp-api.org/wp-json/wp/v2/posts/<id>

 

Referencia de la REST API de WordPress

Os dejo algunas rutas y enlaces de la rest api oficial de WordPress, aqui teneis toda la referencia

 

https://developer.wordpress.com/docs/api/

 

ResourceBase Route
Posts/wp/v2/posts
Post Revisions/wp/v2/revisions
Categories/wp/v2/categories
Tags/wp/v2/tags
Pages/wp/v2/pages
Comments/wp/v2/comments
Taxonomies/wp/v2/taxonomies
Media/wp/v2/media
Users/wp/v2/users
Post Types/wp/v2/types
Post Statuses/wp/v2/statuses
Settings/wp/v2/settings

Programas para Trabajar con una Rest API

  • postman
  • advanced rest client ( Chrome )

Tutoriales de Rest API