Si estás desarrollando una app (da igual el tipo) y estás extrayendo datos de tu instalación WordPress, sabrás que las consultas nativas a la REST API son un poco... flojitas.

No pasa nada, se pueden declarar custom endpoints, donde extraer la información que queramos y, la casualidad, de eso va el artículo que estás leyendo.

Pongámonos en situación

Crearemos un endpoint que extraiga exactamente los datos que queremos de la base de nuestra instalación de WordPress. Concretamente, usaré un ejemplo que desarrollé para mi amigo Roberto Tuñón y su agenda ocio-cultural de Asturias.

El caso es que empezó a colaborar con un tercero y necesitaba instalar un widget en el sitio de este para mostrar los próximos eventos.

Todo esto lo tenía prácticamente desarrollado ya en Convulsio, porque tiene los futuros eventos y podíamos partir de esa WP_Query.

Los puntos clave

Hay algunas cosas clave que has de entender, para las que daré por hecho que sabes unas nociones mínimas de desarrollo web con WordPress; ya que en este artículo sólo haré incapié en lo que considero imprescindible, a saber:

Paso 1, preparar el endpoint

Para ello, añadimos una acción al hook rest_api_init, que va a registrar la ruta para el nuevo endpoint que vamos a añadir:

Aquí has de entender lo siguiente:

Paso 2, el contenido del nuevo endpoint

Aquí vamos a preparar lo que retorna nuestra función, con todo el contenido que deseemos mostrar:

El resumen de todo esto es un WP_Query que extrae la información que queremos, en este caso consultamos sólo los eventos posteriores al día de hoy.

Después de configurar el WP_Query, hacemos las típicas comprobaciones de que existen contenidos y para cada resultado, incluímos los valores en un array, tal que $data[$i][VALOR], donde $i corresponde con cada artículo y el valor será lo que queramos sacar en ese endpoint.

Aquí podemos sacar toda la información que queramos, de manera que obtendremos algo así:

Paso 3, crear el plugin o widget para imprimir

En este punto, tenemos el endpoint listo, mostrando la información que queremos en formato JSON, por lo que sólo tendremos que crear un plugin o widget que lea el JSON de ese endpoint e imprimirlo o procesarlo.

En el futuro escribiré un artículo sobre cómo hacer esto, ya que no tiene mucho que ver con la REST API, sino con crear un plugin o widget.

Si te ha gustado, ya sabes lo que tienes que hacer.