La API REST de WordPress está en proceso de cambio de WordPress. Puede que no lo haya notado, ya que gran parte de ella está bajo el capó, pero las implicaciones de API REST marcan una gran diferencia para el futuro de WordPress, tanto en términos de su base de código como de sus usos.

Si no ha trabajado con API REST de WordPress, puede que se pregunte qué es. Así que vamos a empezar mirando lo que es API de REST.

¿Qué es API de REST de WordPress?

API REST de WordPress es una interfaz que los desarrolladores pueden utilizar para acceder a WordPress desde fuera de la propia instalación de WordPress. Se accede a él utilizando JavaScript, lo que significa que se puede utilizar para crear sitios web y aplicaciones interactivas.

REST significa Representational State Transfer y API significa Application Programming Interface. Echemos un vistazo a lo que significa cada uno de ellos.

¿Qué es una Interfaz de Programación de Aplicaciones (API)?

Una Interfaz de Programación de Aplicaciones, o API, se define como:

«Una interfaz o protocolo de comunicación entre un cliente y un servidor para simplificar la construcción de software del lado del cliente.»

Si no está familiarizado con las API, es posible que eso no le ayude mucho. En pocas palabras, una API es un conjunto de código que permite a un sistema interactuar (o «interfaz») con otro. Si alguna vez ha añadido un mapa de Google a su sitio de WordPress, ha utilizado API de Google Maps, que permite que su sitio de WordPress interactúe con Google Maps.

Estos sistemas no necesitan estar completamente separados. WordPress ya tiene múltiples APIs, para cosas como plugins, configuraciones y atajos. Estos pueden ser utilizados por los desarrolladores de plugins y temas para interactuar con el núcleo de WordPress y hacer que las cosas sucedan (como crear atajos y añadir pantallas de configuración al administrador de WordPress).

La diferencia con la API de REST es que permite que los sistemas fuera de la propia instalación de WordPress interactúen con WordPress, que es donde entra en juego la parte de REST.

¿Qué es la transferencia estatal de representación (REST)?

Representational State Transfer, o REST, proporciona estándares que los sistemas web pueden utilizar para interactuar entre sí. Sin REST, dos sistemas no podrían entenderse entre sí y, por lo tanto, enviar datos de un lado a otro.

Para que una aplicación sea RESTful, debe cumplir con cinco principios:

  1. Interfaz uniforme. Las URLs utilizadas para acceder a los recursos del sistema tienen que ser uniformes, consistentes y accesibles a través de un enfoque común como GET (se explicará más tarde).
  2. Cliente-servidor. Las aplicaciones cliente y las aplicaciones de servidor deben estar separadas, de modo que puedan desarrollarse independientemente unas de otras. Si la tecnología del lado del servidor (es decir, WordPress) cambia, la aplicación del lado del servidor (una aplicación, por ejemplo) debe poder acceder a ella a través del mismo método sencillo.
  3. Stateless (Protocolo sin estado). El servidor no cambia de estado cuando se realiza una nueva solicitud utilizando la API. No almacena las peticiones que se han hecho.
  4. Cachéable. Todos los recursos deben poder almacenarse en caché para mejorar la velocidad y la conformidad con los estándares web. El almacenamiento en caché se puede implementar en el lado del servidor o del cliente.
  5. Sistema de capas. Un sistema RESTful le permite utilizar varias capas para acceder a él, almacenando los datos en servidores intermedios si es necesario. El servidor no puede decir si el cliente final está directamente conectado a él.

Todas estas restricciones se refieren a páginas web y aplicaciones y rigen la forma en que una aplicación puede interactuar con la API.

¿Qué significa esto para WordPress?

La combinación de REST y API significa que  API REST de WordPress es un conjunto de código diseñado para hacer posible que otros sistemas interactúen con WordPress y que está construido de una manera que asegura que estos sistemas se entiendan entre sí.

Esto significa que un sitio web de terceros o una aplicación móvil, por ejemplo, puede acceder a la base de datos de WordPress, obtener datos de ella y añadir datos a la misma.

Sin embargo, hay una serie de implicaciones y usos para esto.

Entendiendo API REST de WordPress

API REST de WordPress fue desarrollada en respuesta a los cambios en la forma en que se desarrollan los sitios web y las aplicaciones y a la necesidad de abrir WordPress más ampliamente.

Fondo de API REST de WordPress

API REST de WordPress fue lanzada como parte del núcleo en la versión 4.7 en diciembre de 2016, pero ya estaba disponible como un plugin antes de esa fecha.

Está diseñado para soportar una amplia gama de aplicaciones construidas sobre WordPress y para transformar WordPress de un sistema de gestión de contenidos a una plataforma de aplicaciones.

Es utilizado ampliamente por WordPress.com, cuya interfaz basada en JavaScript utiliza API REST para interactuar con la base de datos de WordPress. También es utilizado por la interfaz de edición de Gutenberg, que se convirtió en parte del núcleo en 2019.

API REST amplía la gama de aplicaciones para las que se puede utilizar WordPress. Mientras que un sistema de gestión de contenidos destaca en la ejecución de un sitio web complejo, una plataforma de aplicaciones también se puede utilizar para impulsar aplicaciones de una sola página basadas en web o SPAs (si alguna vez ha utilizado Google Docs, ha utilizado uno de ellos).

En estos, el contenido se actualiza cuando el usuario toma acción, en lugar de cargar nuevas páginas. Debido a que utiliza JavaScript (un lenguaje del lado del cliente) en lugar de PHP (un lenguaje del lado del servidor), puede hacer que las cosas sucedan en el navegador del usuario sin tener que enviar constantemente peticiones al servidor.

Implicaciones para los usuarios y desarrolladores de WordPress

Si usted es un usuario y/o desarrollador que trabaja con WordPress, API REST tiene una serie de implicaciones.

Para los usuarios, estos incluyen:

  • Cambios en la interfaz, incluyendo el editor de Gutenberg.
  • Cambios y mejoras en la aplicación WordPress para móviles.
  • Las pantallas de administración de WordPress auto-organizadas se parecen más a las pantallas de WordPress.com con el paso del tiempo.

Para los desarrolladores, hay implicaciones y posibilidades más amplias:

  • La capacidad de crear SPAs usando API REST, atrayendo datos de WordPress pero con un aspecto muy diferente al de WordPress.
  • La capacidad de integrar WordPress con otras tecnologías y sistemas frontend.
  • La capacidad de desarrollar con WordPress si es un desarrollador de frontend que no escribe PHP.
  • Para los desarrolladores de PHP, una necesidad creciente de ampliar sus habilidades para incluir JavaScript.
  • Cambios específicos como la necesidad de construir bloques Gutenberg en lugar de meta boxes en las pantallas de edición de páginas y postproducción.

Con el tiempo, API REST de WordPress significará que la mayor parte del núcleo de WordPress se escribirá en JavaScript y no en PHP. Si es un desarrollador de WordPress, esto significa que necesitará aprender JavaScript.

¿Cómo acceder a API REST de WordPress?

¿Cómo se accede a API REST de WordPress?

Para acceder a WP-API REST, deberá acceder a su sitio a través de la línea de comandos. Con WordPress, esto se llama WP-CLI. Usted no hace nada de esto a través de sus pantallas de administración o accediendo directamente al código de su sitio.

Echemos un vistazo a cómo empezar.

Acceso a WP-REST mediante WP-CLI

WP-CLI es la interfaz de línea de comandos de WordPress. Le permite acceder y trabajar con WordPress a través de la interfaz de línea de comandos (CLI) de su ordenador. WP-CLI está preinstalado con todos los planes de hosting de Kinsta.

Para acceder a la CLI, abra Terminal en un Mac o en Linux, o Símbolo del sistema en Windows.

Terminal en Mac

Terminal on Mac

Para acceder a un sitio remoto, necesita SSH en su servidor para acceder a él a través de WP-CLI (¿No puede conectarse por SSH? Aprenda a arreglar el error de «Connection Refused» de SSH).

Para acceder a un sitio local, basta con utilizar la estructura de directorios correcta desde la línea de comandos. Es una buena idea experimentar con API REST en un sitio de pruebas local antes de probarla en un sitio en vivo.

Necesitará acceder específicamente a API REST de su sitio, de esta manera:

http://yoursite.com/wp-json/wp/v2

A continuación, puede añadir elementos para acceder a determinados tipos de datos, que analizaremos con más detalle en breve. Estos elementos se denominan puntos finales.

Autenticación

Una vez que haya accedido a su sitio, es posible que tenga que pasar por un proceso de autenticación. Algunos endpoints son públicos y no requieren autenticación, mientras que otros sí.

No está iniciando sesión en el administrador de su sitio aquí: API REST hace las cosas de forma un poco diferente.

Para poder autenticar su sitio a través de WP-CLI, necesitará instalar un plugin de autenticación. Para las instalaciones de desarrollo, el plugin Basic Auth hace el trabajo y es fácil de usar.

Sin embargo, para sitios en vivo, debería utilizar una forma más robusta de autenticación como el plugin JWT Authentication, que utiliza JSON Web Token y es más seguro.

A continuación, puede utilizar la línea de comandos para acceder a los datos e incluir la autenticación.

El siguiente ejemplo utiliza curl para probar la conexión con WordPress. Se emitirá una lista de borradores de puestos.

curl -X GET --user username:password -i http://yoursite.com/wp-json/wp/v2/posts?status=draft

Los borradores de mensajes no son información pública, por lo que necesita autenticación para acceder a ellos. Pero si está buscando datos que son públicos, no necesita autenticación. Así que para recuperar una lista de mensajes que han sido publicados, puede utilizar:

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

Esto obtendría todos los mensajes publicados porque son públicos.

Descripción general de los comandos de API REST de WordPress

Una vez que haya accedido a su sitio y sepa cómo utilizar la autenticación (y, de hecho, si es necesario), tendrá que utilizar uno de una serie de comandos para interactuar con su sitio.

Los comandos que necesitará usar son:

  • GET recupera un recurso como un post u otros datos.
  • POST añade un recurso al servidor, como un mensaje, un archivo adjunto u otro recurso.
  • PUT se puede utilizar para editar o actualizar un recurso que ya está en el servidor.
  • DELETE elimina un recurso del servidor. Utilícelo con cuidado!

Echemos un vistazo a cada uno de ellos por separado.

GET

El commando GET  es probablemente el más utilizado: recupera datos. El siguiente ejemplo (que se utiliza una vez que cuando se accede con éxito a tu sitio web) le mostrará una lista de todas las páginas publicadas en su sitio:

GET http://yoursite.com/wp-json/wp/v2/posts/?status=published

Tenga en cuenta que no he incluido la ruta completa a su sitio en la línea de arriba, ya que ya ha accedido a ella utilizando WP-CLI.

Una vez recuperados esos datos, puede utilizarlos para informar al siguiente paso. Puede borrar uno de esos mensajes, editarlo o actualizarlo. Podría simplemente enviar mensajes a su aplicación web.

Digamos que quiere ir a buscar el último post. Usaría esto:

GET http://yoursite.com/wp-json/wp/v2/posts/?per_page=1

Hay una serie de argumentos que puede usar cuando trabaja con mensajes. Consulte el Manual de  API REST de WordPress para obtener más información.

POST

Utilice POST para añadir nuevos datos o recursos a su sitio.

Así que, por ejemplo, si quiere crear un mensaje, empezará usando un comando POST:

POST http://yoursite.com/wp-json/wp/v2/posts/

Esto crearía un nuevo borrador vacío.

A continuación, puede actualizar el mensaje utilizando un comando PUT para editarlo.

Con un comando POST, también puede agregar otros recursos además de los puestos, incluyendo adjuntos y otros tipos de puestos.

Para añadir una página a su sitio, puede utilizar algo como esto:

POST http://yoursite.com/wp-json/wp/v2/posts/pages

Esto crearía una página vacía de la misma manera que crearía una entrada vacía.

PUT

El comando PUT le permite editar un recurso existente, incluyendo los mensajes.

Supongamos que tiene varios borradores en su sitio web. Quiere comprobarlas y actualizar una para que se publique.

Podrías empezar por obtener una lista de todos los mensajes de borrador:

POST http://yoursite.com/wp-json/wp/v2/posts/?status="draft"

El sistema le dará una lista de todos los borradores actuales. Puede modificar el status de uno de ellos utilizando su ID:

PUT http://yoursite.com/wp-json/wp/v2/posts/567

Esto accede a ese mensaje y le permite editarlo. A continuación, puede modificar su status utilizando el argumento de status:

{
"status" = "publish"
}

O bien, puede agregar contenido al mensaje y publicarlo:

{
"status" = "publish"
"content" = "content here"
}

El servidor devolverá un estado de 200 - OK que indica que la petición PUT ha editado correctamente el mensaje.

DELETE

El comando DELETE hace lo que usted esperaría: borra un recurso. Por defecto, si lo usa para borrar un mensaje, lo pondrá en la papelera en lugar de borrarlo permanentemente.

Así que si quisiera mover el mensaje que acaba de crear a la papelera, usarías esto:

DELETE http://yoursite.com/wp-json/wp/v2/posts/567

Sin embargo, si quisiera pasar por alto la papelera y eliminarla permanentemente, usaría el argumento force:

DELETE http://yoursite.com/wp-json/wp/v2/posts/567?force=true

Esto elimina permanentemente el mensaje sin opción de deshacerlo, por lo que se debe usar con precaución.

¿Cuándo no usar API REST de WordPress?

API REST de WordPress no siempre será el enfoque correcto para desarrollar un sitio web o una aplicación. He aquí algunas consideraciones que debe tener en cuenta antes de utilizarlo para el desarrollo:

Compatibilidad

Si su aplicación se va a utilizar en dispositivos que no ejecutan JavaScript o por usuarios que probablemente la tengan desactivada, no se ejecutará si está utilizando API REST.

Un sitio WordPress codificado en PHP producirá HTML para que no sufra este problema. Los dispositivos que no usan JavaScript son cada vez más raros, pero si está desarrollando específicamente para ellos, API REST no funcionará.

Del mismo modo, si es probable que sus usuarios desactiven JavaScript, entonces trabajar con API REST causará problemas. Algunos usuarios desactivan JavaScript en sus navegadores por razones de accesibilidad o seguridad.

Accesibilidad

Los sitios o aplicaciones desarrollados con JavaScript no siempre son tan accesibles como los que salen en HTML.

Esto se debe en gran medida a la forma en que se utiliza JavaScript para entregar contenido dinámico que puede no funcionar bien con los lectores de pantalla y puede causar problemas a las personas con deficiencias visuales o epilepsia fotosensible.

Usar API REST para acceder a su sitio WordPress y a los datos de salida de una forma que esté diseñada para ser accesible significa que puede superar estos problemas, pero vale la pena comprobar la accesibilidad de su sitio mientras lo está desarrollando.

SEO

Las aplicaciones de una sola página, que se actualizan con frecuencia, a veces pueden causar problemas de SEO. Esto se debe a que el contenido que no se entrega cuando se imprime por primera vez la página puede no ser indexado por los motores de búsqueda.

Google y otros motores de búsqueda se están poniendo al día con el hecho de que muchos sitios web ahora tienen SPA y los están indexando adecuadamente. Pero vale la pena hacer una auditoría SEO completa de cualquier sitio que desarrolle utilizando API REST.

¿Cómo desactivar la API de REST de WordPress?

Si no desea que las aplicaciones puedan acceder a los datos de su sitio mediante API REST, puede desactivarla. Recuerde que los datos públicos pueden ser accesibles para cualquier persona, no sólo para usted.

Para ello, puede instalar el plugin Desactivar WP REST API. Esto desactiva la API REST para cualquiera que no haya iniciado sesión en su sitio.

Disable WP REST API
Deshabilitar WP REST API plugin

Alternativamente, puede agregar algún código al archivo de funciones de su tema o escribir su propio plugin. Es mejor escribir un plugin ya que no es una funcionalidad específica del tema.

En su plugin, agregue sólo dos líneas:

add_filter( 'json_enabled', '__return_false' );
add_filter( 'json_jsonp_enabled', '__return_false' );

Esto deshabilitará completamente API REST para su sitio. Puede que tenga efectos secundarios para sus pantallas de administración, así que asegúrese de que todo funciona correctamente una vez que lo haya añadido.

Aplicaciones del mundo real utilizando API REST de WordPress

La API REST presenta algunas posibilidades interesantes para el futuro de WordPress. Aquí hay algunos ejemplos de aplicaciones y sitios que utilizan API REST de WordPress para crear SPAs o para enlazar WordPress con otros sitios y tecnologías.

WordPress.com

WordPress.com
WordPress.com

Las pantallas de administración de WordPress.com están construidas completamente usando API REST para proporcionar un SPA con el que los usuarios interactúan para administrar su sitio.

Esto hace que la comunicación entre la interfaz y el servidor sea dinámica y resulta en una interfaz fácil de usar que WordPress.org probablemente imitará con el tiempo.

El Editor de Bloques (Gutenberg)

El editor de Gutenberg
El editor de Gutenberg

También en las pantallas de administración de WordPress, pero esta vez también en WordPress autohospedado, el editor de bloques de Gutenberg utiliza API REST para comunicarse con su base de datos y crear bloques.

Para que los tipos de mensajes funcionen con el editor Gutenberg, deben tener habilitada API REST. Lo que significa que si está registrando un tipo de mensaje personalizado y utiliza Gutenberg, tendrá que añadir la siguiente línea para habilitar el editor de bloques para ese tipo de mensaje:

"show_in_rest" = true;

Event Espresso

Event Espresso
Event Espresso

Event Espresso es un plugin de WordPress que permite a los usuarios organizar y publicitar eventos. Utiliza API REST para que los usuarios puedan acceder a los datos desde fuera de WordPress. Esto significa que puede crear aplicaciones móviles o SPAs para gestionar sus eventos.

UsTwo

UsTwo
UsTwo

UsTwo es una agencia digital cuyo sitio fue construido usando API REST como una aplicación de una sola página. Esto combina un front-end construido usando React con un backend alimentado por WordPress (lectura sugerida: Su guía para iniciar y dirigir una exitosa agencia de WordPress).

El contenido de su página única es modular, con una estructura diferente a la de una página estándar de WordPress. Para que esto funcione, utilizan un plugin de creación de páginas personalizado que permite a su equipo añadir contenido modular al sitio.

USA Today

USA Today
USA Today

El sitio web de USA Today fue reconstruido usando la integración de API REST WordPress con los sistemas y módulos existentes en el sitio.

API REST permitió que el contenido del sitio fuera enviado a otros puntos de venta como Facebook Instant Articles y Apple News, utilizando JSON. También escribieron un juego social en línea para su sección de deportes, construido usando JavaScript.

Resumen

API REST de WordPress presenta algunos retos interesantes, pero también oportunidades interesantes tanto para los usuarios de WordPress como para los desarrolladores. Es el futuro de WordPress y es probable que cambie radicalmente la forma en que desarrollamos con WordPress y la forma en que lo usamos.

¿Cuál es su opinión sobre API REST? ¿Lo ha usado para algunos de sus proyectos? Cuéntanoslo en la sección de comentarios de abajo!

Rachel McCollin

Rachel McCollin lleva ayudando a la gente a crear sitios web con WordPress desde 2010. Es una gran fan de WordPress autoalojado y quiere ayudar a tanta gente como sea posible a crear un sitio web impresionante con él.