WooCommerce es uno de los plugins de WordPress más populares para crear aplicaciones de comercio electrónico. Además de utilizar WooCommerce en una aplicación tradicional de WordPress, puedes utilizarlo como una solución headless.
Este artículo te enseña a crear una aplicación WordPress headless con React desplegada en Kinsta.
Introducción a WooCommerce headless
El término «ecommerce headless» significa la separación del backend (cabeza) del frontend (cuerpo) de una aplicación de comercio electrónico. La arquitectura headless pasa peticiones entre las capas de presentación (frontend) y las capas de aplicación (backend) de una solución de comercio electrónico a través de APIs.
Las APIs definen las interacciones entre los intermediarios, lo que permite a las empresas cambiar las capas de presentación sin alterar la funcionalidad de las capas de aplicación y actualizar, editar o añadir productos a varias capas de la aplicación.
En una aplicación WooCommerce headless, la API de WooCommerce es un intermediario, que proporciona comunicación entre el frontend y el backend. Además de las ventajas mencionadas anteriormente, esto permite un desarrollo frontend flexible y escalable, lo que te permite centrarte en la creación de interfaces de usuario atractivas y dinámicas con stacks tecnológicos modernos como React o Vue.
Además, el uso de WooCommerce headless garantiza el futuro de la infraestructura de comercio electrónico, ya que te ayuda a adaptarte a la evolución de las necesidades de los clientes y a los avances tecnológicos. Puedes actualizar sin esfuerzo los componentes del frontend al tiempo que garantizas la estabilidad y fiabilidad de la plataforma WooCommerce del backend.
Este enfoque moderno ofrece numerosas ventajas en comparación con las configuraciones tradicionales de comercio electrónico de WordPress.
Ahora que ya sabes qué es una aplicación WooCommerce headless y cuáles son sus ventajas, es hora de que crees una por ti mismo. Utilizando WordPress, React y el plugin WooCommerce, crearás una aplicación de comercio electrónico y la desplegarás en Kinsta.
Requisitos previos
Antes de empezar, asegúrate de que tienes lo siguiente:
- Conocimientos de React y WordPress
- Una instalación de Node.js
- Un sitio web WordPress operativo
- Una cuenta Kinsta activa
Ventajas de WooCommerce headless
Cuando eliges la ruta headless para tus aplicaciones WooCommerce, desbloqueas una serie de beneficios, especialmente la flexibilidad de tener un backend que soporte varios frontends para tu aplicación.
Aquí tienes otras ventajas de WooCommerce headless:
- Personalización mejorada — Puedes construir tu aplicación WooCommerce como quieras utilizando cualquier framework web.
- Rendimiento mejorado del sitio — Puedes aprovechar frameworks rápidos como React y Vue para aumentar significativamente el rendimiento de tu sitio.
- Beneficios SEO — Tienes más control y flexibilidad sobre las estrategias SEO para alcanzar los objetivos de tu negocio.
- Mejor escalabilidad — Tu sitio puede escalarse de forma más eficiente, garantizando un rendimiento sin problemas incluso durante periodos de mucho tráfico.
- Capacidad para crear experiencias únicas para los clientes — Te liberas de las limitaciones de las plantillas tradicionales. Puedes crear experiencias innovadoras y personalizadas para tus clientes.
Configurar un sitio WooCommerce headless
Aquí tienes una guía paso a paso para configurar un sitio WooCommerce:
- Accede a tu panel MyKinsta
- Ve a Añadir Servicio > Sitio WordPress.
- Selecciona la opción Instalar WordPress.
- En la página Añadir nuevo sitio WordPress, rellena los campos necesarios para instalar WordPress.
- Marca la casilla Instalar WooCommerce antes de hacer clic en Continuar.
Activar el plugin WooCommerce
- En tu panel de MyKinsta, haz clic en Dominios en la barra lateral.
- En la página Dominios, haz clic en Abrir Administración de WordPress.
- Accede a tu panel de administración de WordPress, navega hasta plugins, selecciona el plugin WooCommerce y actívalo.
Configurar WooCommerce para el funcionamiento headless
Para configurar WooCommerce para operaciones headless:
- Accede a tu panel de administración de WordPress. En la barra lateral, haz clic en WooCommerce > Configuración.
- En la página Configuración, haz clic en la pestaña Avanzado. A continuación, haz clic en API Rest.
- Ahora haz clic en Añadir clave.
- Haz clic en Crear una clave API. Dale una descripción a tu nueva API REST, establece el campo Permisos en Lectura/Escritura y haz clic en Generar clave API.
- Copia la clave y la clave secreta del cliente y guárdalos de forma segura para utilizarlos en la aplicación React.
- Por último, ajusta la estructura de los Enlaces Permanentes para garantizar que se devuelvan datos JSON al solicitar la API. En el panel de administración de WordPress, haz clic en Configuración > Enlaces permanentes y selecciona Nombre de la entrada.
Antes de continuar, añade algunos productos a tu tienda WooCommerce. Ve a la sección WooCommerce de tu panel de control de WordPress, haz clic en Productos y sigue las instrucciones para añadir productos. También puedes importar estos productos de ejemplo para tu tienda.
Con WordPress y WooCommerce configurados, estás listo para centrarte en el frontend de tu aplicación de comercio electrónico headless.
Configurar un proyecto React
A continuación te explicamos cómo configurar un proyecto React:
- En tu directorio preferido, utiliza los siguientes comandos para crear un proyecto React:
# Remember to replace <app-name> with your preferred name # With npx npx create-react-app <app-name> && cd <app-name> # With yarn yarn create react-app <app-name> && cd <app-name>
- Una vez creado tu proyecto, crea un archivo .env en la raíz de tu proyecto y añade lo siguiente:
REACT_APP_CONSUMER_KEY=your_Woocommerce_consumer_key REACT_APP_CONSUMER_SECRET=your_Woocommerce_consumer_secret
Sustitúyelo por tu clave y clave secreta de cliente de WooCommerce generados anteriormente.
- A continuación, utiliza el siguiente comando para instalar un paquete para gestionar rutas:
## With npm npm i react-router-dom ## With yarn yarn add react-router-dom
- Por último, lanza el proyecto React utilizando el siguiente comando:
## With npm npm start ## With yarn yarn start
Desarrolla el frontend de tu sitio WooCommerce headless
Una tienda de comercio electrónico de éxito muestra los productos y facilita las compras. Empieza por mostrar los productos disponibles en la tienda WooCommerce en el frontend. Esto implica hacer peticiones a la API de WooCommerce.
El endpoint para listar todos los productos es wp-json/wc/v3/products
. Este endpoint debe añadirse a la URL del host. Añade esta variable a tu archivo .env para tu URL base, que es la URL del host anexada al endpoint products
. Actualiza http://example.com
con el dominio de tu sitio WooCommerce.
REACT_APP_BASE_URL=http://example.com/wp-json/wc/v3/products
Cuando realices solicitudes a la API, debes incluir tu clave de cliente y tu clave secreta de cliente en la URL. Cuando se combinan, la URL tiene este aspecto
https://kinstawoocommerce.kinsta.cloud/wp-json/wc/v3/products?consumer_key=your_consumer_key&consumer_secret=your_consumer_secret
Hagamos peticiones a la API en la aplicación React utilizando la API Fetch para obtener los productos de WooCommerce.
- En tu aplicación React, abre el archivo App.js en el directorio src y sustituye su contenido por el código que aparece a continuación:
import {Link} from 'react-router-dom'; import {useEffect, useState} from 'react'; function App() { const BASE_URL = process.env.REACT_APP_BASE_URL; const CONSUMER_KEY = process.env.REACT_APP_CONSUMER_KEY; const CONSUMER_SECRET = process.env.REACT_APP_CONSUMER_SECRET; const [products, setProducts] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { const fetchProducts = async () => { const response = await fetch(`${BASE_URL}?consumer_key=${CONSUMER_KEY}&consumer_secret=${CONSUMER_SECRET}`); const data = await response.json(); setProducts(data); setLoading(false); }; fetchProducts(); }, [BASE_URL, CONSUMER_KEY, CONSUMER_SECRET]); return loading ? ( <div className="loaderText"> <h2>Just a moment. Fetching products...</h2>{' '} </div> ) : ( <ul> {products ? ( products.map((product) => ( <li key={product.id}> <Link to={`/product/${product.id}`}> <img src={product.images[0].src} alt="Product banner"/> <h2>{product.name}</h2> <p>Sale price: {product.sale_price}</p> <strong> {product.stock_status === 'instock' ? 'In stock' : 'Out of stock'} </strong> <button>Add to Cart</button> </Link> </li> )) ) : ( <li>No products found</li> )} </ul> ); } export default App;
Este código obtiene una lista de productos del endpoint de la API de WooCommerce utilizando la API Fetch cuando se monta el componente (hook
useEffect
). La URL del endpoint se construye utilizando las variables de entorno establecidas anteriormenteUna vez obtenidos los datos, actualiza el estado del componente (
products
) utilizandosetProducts(response)
y estableceloading
enfalse
utilizandosetLoading(false)
.Mientras se obtienen los datos, muestra un mensaje de carga. Una vez que se obtienen los datos y
loading
se establece enfalse
, mapea a través del arrayproducts
y muestra una lista de elementos de producto utilizando JavaScript XML (JSX). Cada elemento de producto se envuelve en un componenteLink
dereact-router-dom
, que genera un enlace a la página de detalles del producto individual basándose en su ID.Para cada producto se muestra el nombre, el precio, la descripción (renderizada utilizando
dangerouslySetInnerHTML
para inyectar contenido HTML), el estado de las existencias y un botón. - En el directorio src, abre el archivo index.js y sustituye el código por el siguiente fragmento:
import React from "react"; import ReactDOM from "react-dom"; import { BrowserRouter, Route, Routes } from "react-router-dom"; import "./index.css"; import App from "./App"; ReactDOM.render( <React.StrictMode> <div className="container"> <header> <h1>Kinsta Store</h1> </header> <BrowserRouter> <Routes> <Route exact path="/" element={<App />} /> </Routes> </BrowserRouter> </div> </React.StrictMode>, document.getElementById("root") );
Éste muestra el componente
App
cuando se llama a la ruta/
en el navegador. - Ejecuta tu aplicación para ver los cambios.
## With npm npm start ## With yarn yarn start
La aplicación React muestra ahora una lista de productos de la tienda WooCommerce.
Crear páginas de productos dinámicas
Ahora, para mejorar la experiencia del usuario, crea páginas dinámicas de productos utilizando la API de WooCommerce. Esta API proporciona un endpoint para obtener datos sobre un único producto: wp-json/wc/v3/products/<id>
. Para utilizar este endpoint para obtener y mostrar datos sobre un único producto en la tienda, sigue estos pasos:
- Crea un componente ProductDetail.js dentro del directorio src que obtenga y muestre datos sobre un único producto. Este componente obtiene y muestra información detallada sobre un único producto y funciona de forma similar al código del archivo App.js, con la diferencia de que obtiene los detalles de un único producto.
import {useState, useEffect} from 'react'; import {useParams} from 'react-router-dom'; function ProductDetail() { const BASE_URL = process.env.REACT_APP_BASE_URL; const CONSUMER_KEY = process.env.REACT_APP_CONSUMER_KEY; const CONSUMER_SECRET = process.env.REACT_APP_CONSUMER_SECRET; const {id} = useParams(); const [product, setProduct] = useState(null); useEffect(() => { const fetchSingleProductDetails = async () => { const response = await fetch( `${BASE_URL}/${id}?consumer_key=${CONSUMER_KEY}&consumer_secret=${CONSUMER_SECRET}` ); const data = await response.json(); setProduct(data); }; fetchSingleProductDetails(); }, [BASE_URL, CONSUMER_KEY, CONSUMER_SECRET, id]); if (!product) { return ( <div className="loaderText"> <h2>Fetching product details...</h2> </div> ); } return ( <div className="product-detail"> <h2>{product.name}</h2> <h4>Original Price: {product.regular_price}</h4> <h4>Sale price: {product.sale_price}</h4> <img src={product.images[0].src} alt="Product banner"/> <strong> {product.stock_status === 'instock' ? 'In stock' : 'Out of stock'} </strong> </div> ); } export default ProductDetail;
- Crea una nueva ruta en index.js y asígnale el componente
ProductDetail
. Este fragmento de código crea una nueva ruta en index.js y le asigna el componenteProductDetail
. Esto garantiza que cuando los usuarios hagan clic en el enlace de un producto, sean dirigidos a la página del producto correspondiente.// index.js … import ProductDetail from "./ProductDetail"; ReactDOM.render( <React.StrictMode> … <Router> <Routes> <Route exact path="/" element={<App />} /> {/* the new route */} <Route path="/product/:id" element={<ProductDetail />} /> </Routes> </Router> </div> </React.StrictMode>, document.getElementById("root") );
Con estas modificaciones, al hacer clic en cualquier producto de la aplicación se redirige a los usuarios a una página que muestra información detallada sobre ese producto concreto.
Puedes acceder al código completo en este repositorio de GitHub.
Integrar funciones clave de WooCommerce en una configuración headless
Puedes partir de la base de listar productos en una aplicación WooCommerce headless integrando funciones esenciales como las siguientes:
- Carritos de la compra — Gestiona los datos del carrito en el lado del cliente o utiliza almacenamiento local para permitir a los usuarios añadir, eliminar y actualizar artículos sin problemas.
- Procesos de pago — diseña un proceso de pago optimizado con componentes React, recopila la información necesaria, valida la entrada del usuario y garantiza una experiencia de pago fluida.
- Autenticación de usuarios — Implementa una autenticación segura mediante JSON Web Token (JWT) u Open Authorization 2.0 (OAuth2) para mejorar la experiencia del usuario con funciones de registro, inicio de sesión y restablecimiento de contraseña.
- Procesamiento de pagos — utiliza una API de pasarela de pago segura, como Stripe o PayPal, para las transacciones y los reembolsos.
- Gestión de pedidos — Gestiona pedidos y estados de forma eficiente con la API de WooCommerce. Proporciona funciones fáciles de usar para el historial de pedidos, el seguimiento, las devoluciones y los reembolsos, y automatiza los procesos mediante webhooks o arquitectura basada en eventos.
Despliega tu sitio WooCommerce en Kinsta
Una vez que hayas desarrollado tu sitio WooCommerce headless, desplegarlo en la plataforma de Alojamiento WordPress de Kinsta es muy sencillo.
Kinsta ofrece una serie de ventajas, como alto rendimiento, seguridad robusta y escalabilidad, lo que la convierte en la opción ideal para alojar tu sitio de comercio electrónico headless. Si ya tienes un sitio de WordPress que no está en Kinsta, puedes migrarlo a Kinsta fácilmente
Además, puedes desplegar tu aplicación React en el servicio de Alojamiento de Sitios Estáticos de Kinsta de forma gratuita — lo único que tienes que hacer es enviar tu código a tu proveedor Git preferido (Bitbucket, GitHub o GitLab).
Una vez que hayas enviado tu código, sigue estos pasos para desplegar tu sitio:
- Accede a tu panel de MyKinsta.
- Haz clic en Añadir servicio, luego en Sitio estático.
- Selecciona un proveedor Git y haz clic en Conectar proveedor git.
- Selecciona el repositorio y la rama que deseas desplegar. Los ajustes de construcción se detectan automáticamente.
- Asegúrate de añadir las variables de entorno necesarias de tu archivo .env.
- Por último, haz clic en Crear sitio para desplegar tu aplicación React.
¡Has desplegado con éxito tu aplicación WooCommerce headless!
Resumen
Este artículo ha explicado las numerosas ventajas y nuevas posibilidades para crear tiendas online dinámicas y de alto rendimiento mediante la creación de sitios WooCommerce headless.
Al desacoplar el frontend del backend, puedes personalizar tu sitio para ofrecer experiencias de compra más atractivas y personalizadas a los clientes que se benefician de un alto rendimiento, una seguridad robusta y escalabilidad.
Tanto si eres un desarrollador experimentado como si acabas de empezar, Kinsta te proporciona el soporte, las herramientas y otros recursos que necesitas para crear y gestionar soluciones de comercio electrónico innovadoras y exitosas. ¡Alójate en Kinsta hoy mismo para explorar las posibilidades del comercio electrónico headless!
¿Te entusiasman las infinitas posibilidades de WooCommerce headless para tu tienda online? Comparte tus ideas o preguntas en los comentarios a continuación.
Deja una respuesta