Qué es una API y cómo utilizar las API de WordPress

Fecha: 22/01/2020
Si no eres un desarrollador web profesional, es posible que no tengas mucha idea de lo que significa “API de WordPress”. Ese término que has leído por algún blog o que has escuchado en alguna de las conversaciones de trabajo o simplemente tomando algo con amigos del gremio.

Si es este tu caso, no te preocupes, ya que es algo normal y a día de hoy no todo el mundo sabe qué es y para qué sirve. Por eso, voy a intentar explicar, en un lenguaje y términos lo más sencillos posible, qué es una API y cómo se emplea la API de WordPress. ¡Coge papel y boli y vamos a ello!

Índice del artículo
  • Qué es una API
  • Qué es un servicio REST
  • Qué es JSON
  • API REST WordPress para desarrolladores
  • Conceptos básicos de la API REST de WordPress
  • Cómo activar la API de WordPress
  • Autenticación
  • ¿Cómo desactivar la API REST WordPress?
  • Conclusión

Qué es una API


Hablar técnicamente de una API es bastante complejo, pero lo que no es complejo es saber para qué sirve una API en general.

Una API (Application Programming Interface o Interfaz de Programación de Aplicaciones) es una característica de algunos servicios que permite a los programadores interactuar con ellos desde aplicaciones externas. En definitiva, es un conjunto de funciones y procedimientos que permite acceder a las funcionalidades de un software desde otro externo a él. De esta manera, se abstrae el código de la aplicación original y no necesitas saber cómo funciona su código o conocerlo para poder utilizarlo.
Por ejemplo, la app de Twitter para Iphone o Android hace llamadas a las API de la red social para obtener los datos que la app quiere mostrar. Los datos de tu perfil, tu timeline, un tweet concreto con toda su información, etc.

Además, las APIs apenas suelen sufrir cambios de cara al exterior. Esto provoca que cualquier programación que se haga con ellas requiera poco mantenimiento y no necesite cambios en mucho tiempo.

En resumen, desde una aplicación o programa concreto, podrás acceder a las funcionalidades de otra aplicación o programa diferente de una manera rápida y fácil. Interesante, ¿verdad?

Pues bien, estas APIs (una vez realizan sus consultas y funcionalidades correspondientes) devuelven un resultado en formatos distintos. Por ejemplo, la API de WordPress (como verás más abajo) devuelve los datos de sus consultas en JSON. De este modo, todos los programas que quieran conectarse a la API de WordPress trabajan con ese mismo formato de intercambio y pueden utilizar las funciones de la API pese a ser de distintos orígenes. Para entendernos: es como si todos nosotros, seamos del país que seamos y tengamos la lengua materna que tengamos, hablásemos en inglés.

Una vez desarrollada la API (con todo el trabajo que ello conlleva), será tarea del desarrollador o la empresa encargada del desarrollo decidir qué se expone públicamente para el uso del resto de usuarios de la red. Por ejemplo, si revisas la API de Twitter o la API WordPress verás que están muy bien explicadas y documentadas para su uso, ya que les interesa conseguir un mayor volumen de usuario de su red social o CMS.

Evidentemente, a medida que los sitios web son más complejos, las API son más necesarias ya que permiten conectar nuevas características y funcionalidades a tu sitio web. Por ejemplo, puedes insertar un mapa de Google Maps en tu sitio con todas las funcionalidades del mismo, sin tener que codificar e introducir todos los datos de manera manual. También puedes vincular tu tienda online desarrollada en WooCommerce con tu programa de stock y contabilidad, de manera que evites errores y reduzcas tiempos de producción.

Qué es un servicio REST


Ahora que ya sabes qué es una API y para qué se utiliza, te voy a explicar brevemente otro término que debes conocer: REST.

REST (Representational State Transfer) es un estilo de arquitectura que se utiliza a día de hoy para describir una interfaz que pueda ser utilizada entre sistemas que usen HTTP para la transferencia de información.

Los servicios web REST se han hecho bastante populares con los años. Si te fijas, muchas de las empresas con las que interactúas regularmente tienen una: Twitter, Facebook, Amazon, Google Maps, Youtube… y, por supuesto, WordPress.

Eso es por que estos servicios tienen una serie de ventajas importantes:

  • Son escalables, fiables y flexibles.

  • Apenas consumen recursos del servidor.

  • La tecnología, el cliente y el servidor se comunican a través de JSON, lo que los hace independientes.


Un API REST define unas funciones específicas para que los desarrolladores puedan realizar solicitudes sobre estas, mediante protocolo HTTP. Todo ello permite que puedan ser empleadas por cualquier sistema. Únicamente hay que tener en cuenta un par de pautas:

  • Usa correctamente las URIs: La dirección debe ser única ya que cada una apunta a un recurso concreto y único. Además debe ser “independiente de formato”. Es decir, si quieres dar acceso al recurso no añadas su extensión. Por ejemplo: “/raiola/1223.txt” no sería correcto, pero “/raiola/1223” sí. Las URIs tampoco implican acciones, es decir, en la ruta no debes añadir: editar, eliminar… Aquí lo único que importa es identificar el recurso de manera única. Esas acciones se manipulan a través de los métodos HTTP que verás después. Por último, es importante que la URI mantenga una jerarquía lógica.

  • Usa correctamente los métodos de HTTP: No voy a entrar en detalles, porque tendría que dedicar el artículo específicamente a hablarte de REST, pero sí que te voy a explicar cuales son los métodos que existen:

    • GET: Para realizar consultas y leer recursos. Ejemplo: GET /raiola/123

    • POST: Crea un nuevo recurso. Ejemplo: POST /raiola/123

    • PUT: Edita un recurso existente.

    • DELETE: Para eliminar recursos.

    • PATCH: Para editar partes concretas de alguno de los recursos.



  • Implementar Hypermedia: El cliente no necesita conocer las URIS de la API.


Qué es JSON


Y, por último, antes de adentrarnos de lleno en lo que sería la API WordPress, debes conocer qué es JSON y cómo se utiliza en las APIs. JSON (JavaScript Object Notation) es un formato del texto plano ligero que se utiliza principalmente para almacenar e intercambiar información.

Como he comentado anteriormente, estos datos los genera la propia API en el momento en que un sistema hace una consulta. Como es texto plano, es independiente de los lenguajes de programación y los sistemas pueden interpretarlos sin problema. Cada lenguaje tiene una librería que codifica y descodifica datos en JSON.

Su sintaxis es muy sencilla:

  • Cada dato está formado por un par de nombre y valor. Es decir, si quiero enviarte el nombre de mi empresa, en JSON sería "empresa": "Raiola Networks".

  • Cada dato se separa por comas.

  • Los [] contienen objetos.

  • Las {} crean una matriz que almacena pares de datos.


Vamos a ver un ejemplo siguiendo esta sintaxis:
{
“empresa”:”Raiola Networks”
“localidad”:”Lugo”
“productos”:
{ “producto1”:”Hosting SSD Base”,”producto2”:”VPS SSD Optimizado”}
}

Ten en cuenta que un par puede contener un grupo de pares dentro de su valor. Como ves, es autodescriptivo y muy fácil de leer e interpretar por un usuario.

API REST WordPress para desarrolladores


Llegado a este punto del post, ya tendrás una clara idea de lo que es una API y cuáles son son características y funcionalidades básicas. Por lo que ha llegado el momento de trasladar todo lo aprendido al uso de la API WordPress.

La API REST de WordPress forma parte de este CMS desde 2015. Sirve para manipular datos textuales de un sitio a otro, sin acceso directo a una base de datos o interfaz por parte del usuario final. Es decir, este CMS te proporciona una interfaz para que otros sistemas interactúen con tu web. Por ejemplo, si diseñas una aplicación para móvil y tablet podrías acceder a datos de tu sitio desde esa app.

Esto quiere decir que las posibilidades de emplear este gestor de contenidos para cualquier tipo de desarrollo se amplían, ya que la API WordPress va a permitir una total integración con plataformas de terceros.

Conceptos básicos de la API REST de WordPress


Al igual que te he explicado al principio qué es una API y otros términos relevantes, ahora es bueno que conozcas brevemente los elementos importantes del API REST de WordPress:

  • Recurso: Es un elemento de información que está accesible desde la API. Por ejemplo, en la API de WordPress un recurso podría ser una página, entrada, usuario...

  • EndPoint: Los endpoints son las rutas de acceso a los recursos. Si te diriges a “tunombrededominio/wp-json/" puedes ver todos los endpoints ya disponibles en tu sitio. Además, en la documentación oficial del API de WordPress puedes ver las URL de los endpoints más utilizados.

  • Peticiones o requests: Solicitudes HTTP que se realizan a un recurso con la intención de que el sistema devuelva una respuesta con información. Cuando un sistema externo o un plugin de tu web realiza una petición a un recurso de la API, se genera en WordPress el objeto WP_REST_Request.

  • Respuesta o responses: Es la información que devuelve la API. Cuando esto sucede, se crea una instancia en WordPress de la clase WP_REST_Response.

  • Esquema o schema: Es un esquema de metadatos que dice cómo se deben estructurar los datos. En el caso de la API de WordPress, utiliza el esquema JSON. En el ejemplo del apartado “Qué es JSON” puedes ver cómo se estructuran los datos de un endpoint. Aunque no es imprescindible usar un esquema, sí es recomendable.

  • Clase de controlador: Te permite personalizar el API y crear tus propios EndPoints.


Cómo activar la API de WordPress


Desde hace un tiempo, concretamente desde la versión 4.7, WordPress ya ha incorporado de manera nativa su API REST. Pero si no puedes acceder a ella, ya sea por la versión de tu WordPress o porque tu hosting (por seguridad) ya te la oculta, siempre puedes activarla manualmente mediante la instalación de un plugin llamado WP REST API Controller, el cual puedes encontrar en el propio repositorio de plugins de tu WordPress.

WP REST API

Una vez instalado el plugin y activado, podrás comenzar a usar la API WordPress para tu proyecto.

Para acceder a la API, siempre deberás comenzar con la siguiente ruta: . ¿Por qué? Voy a desglosarla para que lo veas:

  • : Tu URL, aunque también puedes trabajar en local http://localhost.

  • /wp-json: Prefijo de la URL de la WP REST API.

  • /wp: Nombre de la URL.

  • /v2: Versión de la WP REST API.


Después de esta URL, puedes añadir el recurso a explorar, por ejemplo: /posts para ver el listado de posts publicados en tu web.

Introduciendo esta ruta en tu navegador o complemento de lectura de JSON, obtendrás esto (si trabajas con Mozilla Firefox). Si no es así, con otros navegadores o programas obtendrás la misma información pero con un estilo diferente.

API REST WordPress

La imagen que ves arriba es un Esquema. Como te he explicado anteriormente, no es otra cosa que la representación de los datos que forman la respuesta de la API que he solicitado previamente. En este caso en concreto, la información de los posts del blog.

Como ves, los campos id, title, content, author… son parte de la respuesta proporcionada por la API y serán de gran utilidad para posteriores integraciones con otros sistemas.

Para probar estas solicitudes y obtener los esquemas de respuesta, puedes hacerlo en tu propio navegador, pero a veces no es suficiente con ello o no queda muy claro visualmente (sobre todo si empleas Chrome). Así que para mejorar tu experiencia te recomiendo emplear el programa Postman, el cual te permitirá crear las solicitudes según tus necesidades y visualizar su resultado.

Un ejemplo claro y sencillo de lo que puedes hacer vía API WordPress puedes verlo en la creación de entradas de blog vía PHP. Con este simple código, podrás entrar desde un sitio externo a tu WordPress y crear una nueva entrada en él. Todo ello, sin tener que loguearte en tu backend.
<?php
$host = 'http://tudominio.com/wp-json/wp/v2/posts/';
$data = array('title' => 'Titulo Post Nuevo', 'content' => 'Contenido nueva entrada', 'status' => 'publish');
$data_string = json_encode($data);
$headers = array(
'Content-Type:application/json',
'Content-Length: ' . strlen($data_string),
'Authorization: Basic '. base64_encode('admin:clave')
);
$ch = curl_init($host);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
curl_close($ch);
echo($result);

Al igual que has creado un código PHP para la creación de entradas del blog, también puedes crear otros códigos para la edición o borrado de entradas y páginas de tu sitio web.

Autenticación


Como es lógico, no todo el mundo podrá acceder a la información de los Endpoint. Hay información de tu sitio que es pública y hay información privada. Por lo tanto, en muchas ocasiones necesitarás autenticarte previamente para poder trabajar con los recursos de WordPress solicitados mediante API, como sucede en el caso de creación de usuarios o publicación de post y páginas.

Para ello, existen tres formas de autenticarse en la API WordPress:

  • Mediante el uso de cookies: Es el método de autenticación estándar que está disponible de forma nativa. Va asociado al usuario de la persona que está desarrollando para WordPress. Una vez que se loguea en el panel, se genera una cookie. Con esta cookie el desarrollador podrá acceder al API de WordPress.

  • Plugin o complemento: Hay complementos que permiten una alternativa para que sistemas externos se puedan autenticar en tu sitio: WordPress REST API - OAuth 1.0a Server es un ejemplo.


Mediante estas autenticaciones, tu API WordPress estará segura y no podrá ser empleada por cualquier persona que acceda a ella y mucho menos editar sobre tus recursos web.

¿Cómo desactivar la API REST WordPress?


Si eres de los que no se fían o simplemente no quieres sacar provecho a la nueva API WordPress, lo mejor es que procedas a desactivar esta funcionalidad. Recuerda que, si tu versión de WordPress es una versión inferior a la 4.7, la API la tendrás desactivada por defecto. Pero si no es así, te indico los pasos que debes seguir para realizar la desactivación sin emplear plugins para ello.

Edita el archivo functions.php, añadiendo las siguientes líneas:
add_filter('json_enabled', '__return_false');
add_filter('json_jsonp_enabled', '__return_false');

Así de sencillo es desactivar la API WordPress sin emplear plugins

Conclusión


El desarrollo e implementación de la API WordPress posiblemente haya significado para los desarrolladores un importante avance en sus trabajos. Gracias a esta versatilidad ofrecida por WordPress, seguro que muchos ya se han decantado por este CMS para implementarlo en la mayoría de sus proyectos.

Y es que la API WordPress va a facilitar la conexión entre aplicaciones y servicios de terceros. Lo que mejorará las experiencias de usuario, reducirá los costes de desarrollo y aumentará las funcionalidades del CMS, algo que beneficia también al usuario final de la página web o el diseñador medio.

Además, y como buena API que se precie, WordPress cuenta con su propio y completo manual de integración de API REST WordPress y con toda la comunidad activa de este CMS que existe por la red. Por lo tanto, la facilidad de acceso a recursos, manuales e información es otra de las ventajas del uso de la API WordPress.

Si eres de los que ya han probado la API de WordPress, puedes dejar tu mensaje en los comentarios para contarnos tu experiencia. La comunidad WordPress te lo agradecerá :-)
Francis Penalba
Francis Penalba

Periodista de corazón, formación y profesión. Apasionado del mundo del marketing online y sus infinitas posibilidades.

Artículos relacionados

Si te ha gustado este post, aquí tienes otros que pueden ser de tu interés. ¡No dejes de aprender!

Tenemos 2 comentarios en Qué es una API y cómo utilizar las API de WordPress
Avatar del autor del comentario

Javier

25/05/2022 a las 15:32
Hola Francis,

Una pregunta, en el post has indicado como crear una nueva noticia, si por ejemplo tuviera que añadir una nueva imagen, ¿dónde tendría que mirar para crear el "data string" correspondiente con los datos acorde a la imagen?

¿Y en el caso de que tuviera que relacionar la imagen con la noticia?

¡Un saludo y gracias!
Responder
Avatar del autor del comentario

Patricia Álvarez

21/07/2022 a las 13:04
Buenas Javier,

Puedes ver todos los parámetros que son admitidos desde la documentación, en tu caso te interesaría utilizar featured_image. Te dejo un enlace a la documentación:

https://developer.wordpress.com/docs/api/1.2/post/sites/%24site/posts/new/

También existe una documentación referente a la creación de medias:

https://developer.wordpress.com/docs/api/1.1/post/sites/%24site/media/new/

Un saludo
Responder

Deja una respuesta

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