>

Consultando información remota de WordPress usando API REST

Fernan Díez     Colaboraciones    31/05/2019


La WordPress REST API no es una funcionalidad especialmente reciente de WordPress, puesto que ya desde hace algunos años hemos podido tener acceso y disfrutar de sus ventajas en nuestros desarrollo. En cualquier caso, nunca es tarde para recordar su disponibilidad en nuestras instalaciones de WordPress y poner en práctica su aplicación con algunos ejemplos de uso.

En las versiones más recientes, es un elemento que además está incorporado en el core de WordPress y que por defecto se encuentra activa, hecho que nos permitirá empezar a consumir datos sin necesidad de realizar configuraciones previas.

La REST API de WordPress permite a cualquier desarrollador separar la capa de frontend de un desarrollo, de la capa de administración de datos de WordPress ampliando los límites al poder utilizar esa información a través de otras tecnologías y lenguajes de programación.

Conociendo la REST API de WordPress

Tenemos diferentes elementos a tener en cuenta en el uso de la API de WordPress que pasamos a detallar:

Rutas y endpoints

Los paths nos permiten navegar a través de diferentes puntos finales o endpoints. Por ejemplo /wp-json/ es una ruta configurada como punto final, y está pensada para mostrarnos más rutas disponibles.

Peticiones

Las peticiones o requests ofrecen los datos que hemos solicitado en la consulta o devuelven un error si algo no salió correctamente.

Esquemas

Los esquemas o schemas son los modelos con los que se ofrecen esas respuetas, y nos permiten buscar los datos concretos que queremos consumir de la API.

Clases de controlador

Las clases de controlador o controller classes permiten construir nuestras propias rutas y endpoints.

Si queremos tener información más específica sobre cada uno de los elementos de la REST API podemos acudir a la documentación oficial.

Llamadas HTTP a la REST API

Para poder acceder a los puntos finales más útiles deberemos realizar una llamada HTTP en primer lugar a la API REST. El fundamento básico de cualquier llamada es el siguiente, donde deberemos reemplazar el indicador por nuestro propio dominio.

http://dominio.com/wp-json/

Si necesitamos comprobar la conectividad podemos ejecutar el comando CURL usando nuestra propia URL desde la terminal:

curl -X OPTIONS -i http://dominio.com/wp-json/

Podemos repetir este comando utilizando varios de los puntos finales principales. En este caso, usaremos GET a tal efecto

curl -X GET -i http://dominio.com/wp-json/wp/v2/posts

Nos muestra un listado de las publicaciones de nuestra instalación de WordPress.

curl -X GET -i http://dominio.com/wp-json/wp/v2/pages

Nos muestra un listado de las páginas publicadas de nuestra instalación de WordPress.

Si estamos buscando una guía de referencia de los endpoints de la REST API podemos también consultar esta guía específica de referencias.

Consultando información remota de WordPress usando API REST

Si estamos pensando en poner en práctica el uso de la REST API para nuestros desarrollos hay muchos ejemplos que podemos tener en cuenta, pero en este caso buscaremos hacerlo con un caso práctico. Supongamos que queremos añadir en un desarrollo propio información pública de otro sitio externo.

Estamos hablando en cualquier caso de otro sitio web creado con WordPress y al cual no tenemos acceso al no ser administradores o propietarios de ese sitio, por ejemplo un portal de noticias.

Es posible que queramos incluir una sección interna en nuestra web que nos permita obtener las últimas noticias de ese portal para poder enlazarlas y completar con información de valor esa sección en concreto.

Habitualmente los feeds RSS venían siendo una solución para obtener esa información, pero la forma en la que podemos manipular esa información y como se muestra es muy limitada. Este es un caso concreto donde podemos utilizar la REST API para ello.

En este caso crearemos un sencillo script en PHP que utilizará la REST API de un tercero para poder consultar la información y utilizarla en un desarrollo propio.

En primer lugar deberemos acceder a la consulta HTTP del endpoint que necesitamos conocer:

http://www.dominio.com/wp-json/wp/v2/posts/?page=1&per_page=3

En este caso estamos consultando la última versión de la REST API y añadiéndole algunos parámetros para limitar esa consulta a determinados datos. En este caso, tres resultados por página son los que nos van a interesar.

Con órdenes de PHP vamos a decodificar los datos JSON para que podamos utilizarlos como creamos conveniente. Recordemos que ese dominio es externo, es decir, podríamos realizar esta petición sobre cualquier instalación de WordPress reciente con la API REST activa.

$json = file_get_contents($uri);

$posts= json_decode($json);

Recorremos la información facilitada y nos quedamos con algunos parámetros que nos puedan interesar para imprimir el HTML final.

foreach ($posts as $post)

Y finalmente hacemos la llamada a la información que nos interesa, como por ejemplo el permalink de cada entrada, el título o el extracto. Información toda ella disponible desde la API REST.

echo "<h2><a href='" . $post->link . "'>" . $post->title->rendered . "</a></h2>\n";

echo "<p>" . $post->excerpt->rendered . "</p>";

El código completo que podemos utilizar es el siguiente, y tan solo deberemos personalizarlo con la forma que necesitemos para mostrar la información.

<?php

$uri = 'http://www.dominio.com/wp-json/wp/v2/posts/?page=1&per_page=3';

$json = file_get_contents($uri);

$posts= json_decode($json);

echo "<h1>Listado de entradas</h1><ul>";

foreach ($posts as $post) {

echo "<h2><a href='" . $post->link . "'>" . $post->title->rendered . "</a></h2>\n";

echo "<p>" . $post->excerpt->rendered . "</p>";

echo "<p><a href='" . $post->link . "'>Enlace directo</a></p>\n";

}

echo "</ul>";

Enlace completo en Gist

Con este sencillo ejemplo podemos comenzar a crear nuestras propias consultas de datos sobre otras instalaciones de WordPress, al tratarse de información accesible de manera remota, vitaminando de este modo nuestros propios desarrollos y controlando cómo se muestra la información final.

Conclusiones

Es más que interesante conocer las novedades que se van implementando en las nuevas versiones de WordPress, trabajemos o no con el CSM de manera habitual puesto que es posible que en determn


Sobre el autor

Fernan Díez   

Desarrollo Web WordPress & Marketing Online Publico 'WordPress Diario', un podcast sobre desarrollo web con WordPress y marketing online donde encontrarás consejos, herramientas y recomendaciones sobre todo lo que te puede interesar acerca del mundo del diseño web con WordPress, y el marketing digital.