Comencé nuestro viaje sobre la API de WordPress diciendo lo esencial que es que comprendamos a fondo qué es y porque es tan relevante en el panorama actual del desarrollo web
WordPress, como plataforma de gestión de contenidos (CMS), es ampliamente conocido por su facilidad de uso y su versatilidad para crear sitios web de todo tipo, desde blogs personales hasta sitios de comercio electrónico y portales de noticias.
Sin embargo, en la era actual de aplicaciones web interactivas y experiencias digitales personalizadas, surge la necesidad de ir más allá de la presentación tradicional de contenido web
¿Qué es una API?
(Interfaces de Programación de Aplicaciones) Es un conjunto de endpoints (puntos de acceso), que nos permiten a los desarrolladores interactuar con WordPress.
En otras palabras, nos brinda la capacidad de acceder a los datos y funcionalidades de WordPress de una manera estructurada y automatizada.
Imaginemos la API de WordPress como un puente entre el núcleo de WordPress y sus aplicaciones externas, ya sean aplicaciones móviles, sitios web independientes o paneles de control personalizados, aquí ya estamos avanzando un poco el paradigma de mantener o crear un WP desacoplado.
Esto significa que no están limitados a la interfaz de administración tradicional de WordPres, ya que podemos aprovechar el uso de la API para crear experiencias digitales únicas y personalizadas para nuestros usuarios.
La API de WordPress ofrece una amplia gama de posibilidades, desde la obtención de información sobre publicaciones y páginas hasta la manipulación de datos de usuarios, categorías, etiquetas y mucho más. Esto la convierte en una herramienta poderosa para cualquier proyecto que involucre WordPress como base.
WordPress tiene nombres para sus diferentes versiones porque la plataforma utiliza un sistema de nomenclatura basado en el jazz, cada versión se nombra en honor a un músico de jazz destacado.
La elección de nombres de músicos de jazz refleja la cultura abierta y colaborativa de WordPress, así como su deseo de honrar a aquellos que han influido en la cultura en general.
Además, el jazz es un género musical muy creativo y diverso, lo que refleja la naturaleza innovadora y en constante evolución de WordPress como plataforma.
La primera fase de integración de la REST API en el núcleo de WordPress ocurrió con la versión 4.4, lanzada en diciembre de 2015, esta versión incluyó la infraestructura básica de la REST API, permitiendo a los desarrolladores comenzar a experimentar con ella y desarrollar sus propios endpoints personalizados.
Una actualización significativa ocurrió con WordPress 4.7, lanzada en diciembre de 2016.
Esta versión vio la integración de endpoints para entidades principales de WordPress como publicaciones de tipo entradas, páginas, usuarios, términos y comentarios
La inclusión de estos endpoints permitió a los desarrolladores interactuar más plenamente con el contenido de WordPress a través de la API.
La introducción de la REST API en WordPress marcó un hito significativo. Esta abrió nuevas posibilidades para trabajar con WordPress, permitiéndonos a los desarrolladores manipular y acceder a los datos de WordPress desde aplicaciones externas a través de una interfaz basada en HTTP y utilizando el formato de datos JSON.
Esto significa que WordPress puede ser utilizado como un sistema «headless» WordPress sin cabeza o desacoplado donde el backend (WordPress) se separa del frontend (la interfaz de usuario), permitiendo la creación de experiencias de usuario más dinámicas y ricas, como aplicaciones móviles o sistemas integrados con tecnologías modernas de desarrollo web.
La API de WordPress, en especial la REST API, ha transformado cómo los desarrolladores y empresas ven y usan WordPress. Ha llevado a la plataforma más allá de las limitaciones de un CMS tradicional, posicionándose como una herramienta integral para soluciones web complejas y personalizadas.
Con la REST API WordPress no solo administra contenido, sino que también se integra de manera fluida con el ecosistema tecnológico lo que es esencial en un mundo digital cada vez más interconectado.
La REST se basa en los siguientes principios. Los datos se representan como recursos, que se pueden identificar mediante una URL. Siendo un enfoque simple y flexible que es ampliamente compatible.
GraphQL
GraphQL nació en 2012 como una respuesta a las limitaciones de las API REST tradicionales. A medida que Facebook se expandía y sus aplicaciones se volvían más complejas, las API REST se tornaban cada vez más difíciles de administrar y escalar debido a su naturaleza inflexible.
GraphQL es una especificación que define un lenguaje de consulta y un conjunto de tipos de datos
El lenguaje de consulta de GraphQL permite a los clientes especificar exactamente qué datos desean recuperar del servidor.
La ventajas GraphQL es un enfoque más eficiente y flexible que REST, especialmente para casos complejos.
MÉTODO GET
Si quisiéramos traer las publicaciones, los post usaremos la Solicitud GET y la respuesta será un JSON con un array de publicaciones.
Cada publicación estará representada como un objeto con múltiples campos, como título, contenido, fecha de publicación, etc.
Método PUT
Este método actualizará contenido de recursos existentes. Podemos utilizarlo para modificar el contenido de una publicación, actualizar datos y realizar cambios en otros recursos.
Método POST
Este método es el que usaremos para añadir / crear el contenido a nuestro WP, pero para añadir contenido deberemos añadir una autentificación.
Método PATH
Este método es similar al método PUT, PATCH se usa para actualizar parcialmente un recurso. La diferencia es que con PATCH solo se envían los campos que se quieren cambiar. Por ejemplo, si solo quieres actualizar el título de un post, usamos PATCH en lugar de PUT.
Método DELETE
Con este nombre no puede ser otra cosa que ser utilizado para eliminar recursos específicos de la API de WordPress, con este método borraríamos por ID el post, página o contenido de nuestro WordPress
Puedes utilizarlo para eliminar publicaciones, páginas, comentarios o cualquier otro tipo de contenido a través del ID
Seguridad en la API
La autenticación básica es un método simple pero efectivo que implica que los usuarios proporcionen un nombre de usuario y una contraseña para acceder a la API. Sin embargo, es importante utilizar HTTPS para cifrar las credenciales durante la transmisión y asegurarse de que las contraseñas estén almacenadas de manera segura en el servidor.
Tokens de Acceso (OAuth2) es un protocolo de autorización que permite a los usuarios autorizar aplicaciones de terceros para acceder a sus recursos en la API de WordPress sin compartir su contraseña. Esto se logra mediante la emisión de tokens de acceso que se utilizan para autenticar las solicitudes. Este enfoque es más seguro y se utiliza comúnmente en aplicaciones móviles y servicios de terceros.
Algunas API utilizan claves de API (API keys) para autenticar solicitudes. Cada solicitud debe incluir una clave de API válida en los encabezados para ser autorizada. Es importante proteger la clave de API y limitar su alcance a las funciones necesarias
Esta autenticación sirve para proteger tus puntos finales de API REST de WordPress, como publicaciones y páginas, del acceso no autorizado. La clave API se puede regenerar si es necesario, haciendo que todas las claves anteriores caduquen automáticamente.
En algunos casos, puedes utilizar Autenticación de Cookie de sesión para autenticar a los usuarios en la API. Esto es útil si tu sitio web ya utiliza cookies de sesión para autenticar a los usuarios en WordPress.
Es importante recordar que este método solo funciona si estás haciendo solicitudes desde el mismo navegador y contexto en el que iniciaste sesión. Además, este método puede no ser adecuado para todas las aplicaciones, especialmente las que se ejecutan en un contexto diferente al navegador web donde se realizó el inicio de sesión.
Esta forma de autenticación es más común cuando se trabaja con temas y plugins de WordPress que interactúan con la API desde el front-end del sitio web.
En entornos altamente seguros, puedes utilizar Autenticación de Certificado para no autenticar a los usuarios o aplicaciones. Esto implica que los clientes presenten un certificado válido para acceder a la API.
La autenticación de certificado en WordPress no es un método estándar o comúnmente utilizado, especialmente para la API REST de WordPress. La autenticación de certificado implica usar un certificado digital para verificar la identidad de un usuario o sistema, y generalmente se asocia con infraestructuras y aplicaciones empresariales más complejas.
El funcionamiento es el siguiente, Registro de aplicación, solicitud de autorización, concesión de autorización, solicitud de token de acceso, Emisión de token de acceso, Acceso a los recursos
Los tokens de acceso suelen tener una duración limitada
Aplicar OAuth 2.0 en WordPress implica varios pasos tanto en la configuración como en la implementación.
En primer lugar, WP no tiene este método de autentificación por lo que si necesitamos usarlo debemos instalar el plugin WP OAuth Server
Autenticación: Implementa sistemas robustos como OAuth2 o JWT para garantizar que solo los usuarios autorizados puedan acceder a tu API de WordPress. Considera la autenticación de dos factores para una seguridad adicional.
Protección: Utiliza HTTPS para proteger las comunicaciones. Implementa firewalls y sistemas de detección de intrusiones para salvaguardar contra ataques externos. Mantén actualizados WordPress y sus plugins.
Restricción: Aplica el principio del mínimo privilegio limitando los permisos de usuario y el acceso a la API. Controla el acceso a las APIs basándote en los roles y capacidades de los usuarios, permitiendo solo las operaciones necesarias para cada rol.
Validación: Realiza una validación exhaustiva de los datos de entrada para prevenir ataques como inyecciones SQL. Utiliza las funciones de sanitización y validación de WordPress para asegurar que solo se procesen datos seguros y adecuados, evitando la manipulación de datos y ataques de inyección como puede ser la Sanitización de WordPress como sanitize_text_field() para limpiar los datos de entrada. Esto elimina etiquetas HTML y PHP, garantizando que solo se procese el texto.
Utiliza funciones específicas de validación para cada tipo de dato. Por ejemplo, is_email() para correos electrónicos, is_int() para números enteros, etc.
Si recapitulamos lo que hemos visto hasta ahora hemos visto los métodos que existen para poder conectarnos al contenido existente digamos “por defecto” en WordPress como las páginas, post, usuarios y medios.
Pero también podemos acceder al contenido custom post type o CPT, contenido que hemos creado y personalizado, la única condición es añadir cuando creemos nuestro custom post type es la propiedad ‘show_in_rest’ a true, de esta forma ya tendremos expuesto nuestro custom post type
Y podemos llegar a obtener los campos personalizados que se han podido introducir tanto como ACFields, meta box o CMB2
Una de las funcionalidades que más me ha impresionado es que podemos usar la potencia de wp_query(); para servirla a nuestro público con la API, de esta forma podemos crear una consulta parametrizada y servir solamente la datos que necesitamos servir.
Preparación de Consultas SQL: Si necesitas realizar consultas directas a la base de datos, utiliza la función $wpdb->prepare() de WordPress. Esta función prepara una consulta SQL con valores seguros, evitando la inyección de SQL.
Además de poder crear nuestro propia consulta a través de tu propio feed con wp_query();
Si separamos el patrón de diseño MVC (modelo, vista, controlador).
Modelo, la base de datos de WordPress, para la introducción de datos, custom post type y los campos personalizados que se necesiten.
Controlador Sería el encargado de conectar nuestro WordPress y conectarlo utilizando uno de los lenguajes de consulta (API REST o GraphQL).
De esta forma obtenemos como resultado un objeto JSON, el cual manipularemos para extraer únicamente el contenido que vayamos a necesitar.
Las vistas las podemos generar con la librería o framework que necesitemos usando los JSON resultantes.
Hay que decir que WordPress no es un CMS desacoplado por defecto, así que para los más puristas y me gustaría decir que WordPress se puede hacer como desacoplado con un sí timido.
Hasta ahora hemos visto todo lo que puede hacer un WordPress desacoplado, pero hasta un punto de vista perderíamos la visualización previa que puede tener el autor del contenido, ya que sería distinto al que pudiera ver.
Para esto sería mejor usar campos personalizados y un diseño fijo con el fin de no dejar al autor o al usuario ser “creativo”
Todo eso podemos trasladarlo a los siguientes puntos
- Flexibilidad en el Front-End: Permite a los desarrolladores utilizar frameworks modernos para crear interfaces de usuario más interactivas y atractivas, independientemente de las restricciones de los temas de WordPress.
- Mejora del Rendimiento: Al separar el front-end del back-end, se pueden cargar solo los datos necesarios, reduciendo los tiempos de carga y mejorando la experiencia del usuario.
- Seguridad Mejorada: Al desacoplar, el núcleo de WordPress queda oculto del usuario final, lo que disminuye la superficie de ataque y reduce el riesgo de vulnerabilidades específicas de WordPress.
- Escalabilidad: Facilita el manejo de tráfico elevado al permitir escalar el front-end y el back-end de manera independiente, adaptándose mejor a las necesidades del sitio.
- Acceso a Tecnologías Modernas: Ofrece la posibilidad de integrar con tecnologías y herramientas de vanguardia, lo que puede resultar en una mejor experiencia de desarrollo y un producto final más avanzado.
Antes de empezar con ejemplos o listar simplemente decir que aplicaciones hay ya desacopladas, podemos definir el estado
Jamstack es fundamentalmente una filosofía, una metodología, es un enfoque, una forma de pensar, un conjunto de principios y mejores prácticas. Es una arquitectura, no se trata realmente de tecnologías específicas, no existe un instalador de Jamstack, ni es impulsado por una gran empresa, ni existe algún organismo de normalización que lo controle o defina.