Crear endpoint personalizado para la REST API de WordPress

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:

  • rest_api_init: Es el hook al que enganchamos la ruta de nuestro nuevo endpoint
  • Función que “imprime” la información en el endpoint que estamos creando
  • Plugin o widget que consulta ese custom endpoint y hace algo con la información, en este caso imprimirla.

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:

  • rest_api_init se ejecuta cuando se inicializa la REST API, por eso nos enganchamos a ese hook. Tutorial aprender más sobre los Hooks de WordPress
  • register_rest_route es la función que se encarga de registrar la ruta (url final) de la REST API para nuestro endpoint, además le decimos qué función o callback ha de ejecutar en su llamada; en nuestro caso convuls_customquery

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.

6 comentarios en “Crear endpoint personalizado para la REST API de WordPress

  1. Hola, Darío, gracias por este gran artículo en español, no es normal conseguir buen contenido en nuestro idioma.

    Es necesario crear esto en el functions.php de nuestro tema? Me gustaría que no fuese algo que dependa del tema, por el tipo de app que quiero hacer.

    Gracias de antemano.

    1. Hola Luis,
      Lo normal es meter estas funcionalidades en un plugin, suelo poner el ejemplo del tema porque es más “fácil” para el usuario común.

      Saludos!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

DARÍO BALBONTÍN FERNÁNDEZ es el Responsable del tratamiento de los datos personales del usuario y le informa que estos datos serán tratados de conformidad con lo dispuesto en el Reglamento (UE) 2016/679 de 27 de abril (GDPR) y la Ley Orgánica 3/2018 de 5 de diciembre (LOPDGDD), por lo que se le facilita la siguiente información del tratamiento: Fin del tratamiento: mantener una relación comercial y el envío de comunicaciones sobre nuestros productos y servicios. Criterios de conservación de los datos: se conservarán mientras exista un interés mutuo para mantener el fin del tratamiento y cuando ya no sea necesario para tal fin, se suprimirán con medidas de seguridad adecuadas para garantizar la seudonimización de los datos o la destrucción total de los mismos.Comunicación de los datos: No se comunicarán los datos a terceros, salvo obligación legal. Derechos que asisten al usuario: Derecho a retirar el consentimiento en cualquier momento. Derecho de acceso, rectificación, portabilidad y supresión de sus datos y a la limitación u oposición al su tratamiento. Derecho a presentar una reclamación ante la Autoridad de control (agpd.es) si considera que el tratamiento no se ajusta a la normativa vigente. Datos de contacto para ejercer sus derechos: contacto@dariobf.com.

Menú