Qué es una API y cómo utilizar las API de WordPress
Categoría:
Desarrollo web para WordPress,
WordPress,
Desarrollo web
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!
[elementor-template id="80835"]
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.
- 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.
{ “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. 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.
<?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.
¿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
Javier
25/05/2022 a las 15:32Responder a Javier
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *