Astro es un moderno framework frontend que permite a los desarrolladores crear sitios web estáticos de forma rápida y eficiente. Con Astro, los desarrolladores pueden aprovechar la potencia de los modernos frameworks de JavaScript como React, Vue.js y Svelte para crear interfaces de usuario dinámicas mientras producen archivos HTML, CSS y JavaScript estáticos durante el proceso de creación.
Cuando se combina con WordPress como sistema de gestión de contenidos (CMS) headless, Astro permite una integración perfecta de las API del backend y el código del frontend, lo que permite un desarrollo eficiente de sitios web estáticos con contenido dinámico. Este enfoque ofrece varias ventajas.
Los sitios estáticos generados con Astro y un backend de WordPress ofrecen un rendimiento superior. Se pueden servir directamente desde una red de distribución de contenidos (CDN), lo que elimina la necesidad de procesamiento en el servidor y da como resultado tiempos de carga más rápidos y una experiencia de usuario más fluida.
Este tutorial te guía a través del proceso de creación de un sitio estático utilizando Astro alojado en el servicio de Alojamiento de Sitios Estáticos de Kinsta y utilizando WordPress para el backend.
El papel de WordPress como CMS headless
Un CMS headless, como WordPress, separa las capas de gestión de contenidos y de entrega. Permite que el backend mantenga el contenido mientras un sistema diferente, como Astro, se encarga del frontend.
WordPress actúa como repositorio de contenidos, suministrando datos al frontend, que muestra el contenido a los usuarios a través de una API. Esta arquitectura mejora la flexibilidad al permitir reutilizar el contenido para varias salidas, ofreciendo a los usuarios de WordPress una experiencia familiar de gestión de contenidos.
Desacoplar el frontend del backend también ofrece mayor flexibilidad en el diseño del frontend y en la migración de contenidos. Además, al permitir la accesibilidad a través de APIs, el contenido está preparado para el futuro.
Configura tu entorno de desarrollo
Hay tres pasos que debes seguir para configurar tu entorno:
- Instalar Astro.
- Crear un sitio deWordPress.
- Crear un entorno de desarrollo de WordPress.
Requisitos previos
Para seguir este tutorial, asegúrate de que tienes lo siguiente:
- Conocimientos básicos de HTML, CSS y JavaScript
- Node.js y npm (Node Package Manager) o yarn instalados en tu ordenador
- Una cuenta Kinsta. Regístrate para alojar un sitio estático de forma gratuita y accede al panel MyKinsta.
Instalar Astro
- Para tu proyecto, crea un nuevo directorio y navega hasta él.
- Crea un nuevo proyecto ejecutando el siguiente comando en tu terminal:
npm create astro@latest
Este paso produce indicaciones de configuración. Configúralas en función de lo que quieras.
- Una vez que el proyecto se haya creado correctamente, ejecuta
npm run dev
para iniciar el servidor de desarrollo local en http://localhost:4321/.
Configurar un sitio WordPress en Kinsta
Kinsta es un proveedor de alojamiento de WordPress de alta gama conocido por su interfaz intuitiva y su infraestructura de alto rendimiento. Sigue estos pasos para crear un sitio de WordPress en Kinsta.
- En tu panel de control MyKinsta, haz clic en Sitios WordPress y luego en Crear un sitio.
- Selecciona la opción Instalar WordPress y haz clic en Continuar.
- Proporciona un Nombre del sitio, selecciona una Ubicación del centro de datos y haz clic en Continuar.
- Proporciona el resto de información y haz clic en Continuar.
- Una vez creado tu sitio, deberías ver el mensaje «¡Tu sitio ha sido creado!»
Crear un entorno staging de WordPress
Cada instalación de WordPress en Kinsta tiene la opción de establecer un entorno staging gratuito separado del sitio de producción real. Esto es ideal para probar nuevas versiones de WordPress, plugins, código y trabajo de desarrollo en general.
Los pasos para crear un entorno Staging de WordPress en Kinsta son los siguientes.
- En la barra de menús, haz clic en Producción y luego en Crear Nuevo Entorno.
- Selecciona Entorno estándar y haz clic en Continuar.
- Haz clic en Clonar un entorno existente, proporciona un Nombre de entorno, selecciona en Producción para el Entorno a clonar y haz clic en Continuar.
- Una vez desplegado, puedes encontrar el entorno staging de WordPress en el menú en Producción.
Integrar WordPress con Astro
Existen dos métodos principales para integrar WordPress con Astro: una API REST y GraphQL. Esta guía utiliza el método GraphQL.
Para integrar WordPress con Astro, debes:
- Instalar WPGraphQL.
- Conectar Astro a WordPress.
Instalar WPGraphQL
En primer lugar, instala el plugin WPGraphQL en tu sitio de WordPress antes de utilizar GraphQL para conectar Astro a él.
- En el panel de control de MyKinsta, selecciona tu sitio de WordPress.
- En la barra de menús, haz clic en Staging y luego en Abrir WP Admin en la esquina superior derecha.
- Proporciona las credenciales que utilizaste al crear tu sitio WordPress.
- Haz clic en el menú Plugins de la barra de navegación izquierda.
- Haz clic en Añadir Nuevo Plugin para añadir el plugin WPGraphQL.
- Busca «WPGraphQL», haz clic en Instalar Nuevo para instalar el plugin WPGraphQL y, a continuación, haz clic en Activar.
- Para comprobar que el plugin WPGraphQL que has instalado funciona como esperabas, abre el menú GraphQL de la barra de navegación y haz clic en GraphiQL IDE.
- Utiliza el siguiente código en el IDE GraphiQL y haz clic en Ejecutar en la parte superior izquierda para ejecutar la consulta GraphQL:
{ posts { nodes { slug excerpt title } } }
Esta consulta GraphQL recupera eficientemente los
slugs
,excerpts
, ytitles
de las entradas del sitio de WordPress.En la parte izquierda del IDE GraphiQL, puedes ver la lista de entradas obtenidas al ejecutar la consulta GraphQL. Tu endpoint GraphQL de WordPress es accesible en
https://your_wordpress_staging_url/graphql
.
Conectar Astro a WordPress
Para conectar Astro a WordPress, sigue estas instrucciones:
- Crea una carpeta llamada graphql dentro de la carpeta src de tu proyecto Astro.
- Crea un archivo wordPressQuery.ts dentro de la carpeta graphql.
- Utiliza el siguiente código dentro de tu archivo wordPressQuery.ts. Asegúrate de sustituir
https://your_wordpress_staging_url/graphql
por la URL de tu WordPress.interface gqlParams { query: String; variables?: object; } export async function wpquery({ query, variables = {} }: gqlParams) { const res = await fetch('https://your_wordpress_staging_url/graphql', { method: "post", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ query, variables, }), }); if (!res.ok) { console.error(res); return {}; } const { data } = await res.json(); return data; }
Este código define una interfaz
gqlParams
y una función asíncronawpquery
que facilita las consultas GraphQL al sitio de WordPress.
Desarrolla tu sitio con Astro y WordPress
- Para crear una nueva página estática en Astro, crea un archivo llamado blog.astro en el directorio src/pages.
- Pega el siguiente código en el archivo recién creado:
--- import Layout from "../layouts/Layout.astro"; import { wpquery } from "../graphql/wordPressQuery"; const data = await wpquery({ query: ` { posts{ nodes{ slug excerpt title } } } `, }); --- <Layout title="Astro-WordPress Blog Posts"> <main> <h1><span class="text-gradient">Blog Posts</span></h1> { data.posts.nodes.map((post: any) => ( <> <h2 set:html={post.title} /> <p set:html={post.excerpt} /> </> )) } </main> </Layout> <style> main { margin: auto; padding: 1rem; width: 800px; max-width: calc(100% - 2rem); color: white; font-size: 20px; line-height: 1.6; } h1 { font-size: 4rem; font-weight: 700; line-height: 1; text-align: center; margin-bottom: 1em; } </style>
Este código demuestra cómo utilizar la función
wpquery
para obtener datos del sitio de WordPress mediante GraphQL y mostrarlos en el sitio de Astro. - Utiliza
npm run dev
para lanzar el servidor de desarrollo local y ver las últimas entradas del blog de WordPress en tu sitio Astro enhttp://localhost:4321/blog
.
Para gestionar las rutas dinámicas de las entradas individuales del blog, tienes que utilizar una combinación de las rutas dinámicas de Astro y las variables de consulta de WordPress GraphQL. Pasando el ID o slug de la entrada como variable de consulta, puedes generar dinámicamente el contenido de la página para cada entrada del blog. Esto permite una experiencia de usuario más personalizada en tu sitio web.
Despliega tu sitio estático en Kinsta
Ahora, envía tus códigos a tu proveedor Git preferido (Bitbucket, GitHub o GitLab). A continuación, sigue estos pasos para desplegar tu sitio estático en Kinsta:
- En el panel de control de MyKinsta, haz clic en Sitios Estáticos y luego en Añadir sitio.
- Autoriza a Kinsta con tu proveedor de Git.
- Selecciona un Repositorio GitHub y una Rama por defecto. Proporciona un Nombre para mostrar para tu sitio estático y selecciona la casilla Despliegue automático en el commit. Esto permite el despliegue automático de todos los nuevos cambios realizados en el repositorio. Haz clic en Continuar.
- En la sección Configuración de construcción, Kinsta completa automáticamente todos los campos. Deja todo como está y haz clic en Crear sitio.
- Accede a tu sitio Astro accediendo a la URL que aparece como dominio en la página Visión General de tu sitio desplegado. Puedes acceder a las entradas del blog a través de
https://your_kinsta_site_url/blog
.
Resumen
Hay más cosas que puedes hacer con Astro y WordPress. La API de WordPress puede utilizarse para acceder a diversos datos de tu sitio y crear casos de uso únicos con Astro.
Con el Alojamiento administrado de WordPress de Kinsta, obtienes acceso a una infraestructura robusta, CDN mundial, edge caching, múltiples centros de datos y funciones de nivel empresarial. Esto garantiza un entorno rápido y seguro para tu sitio de WordPress.
Además, cuando utilizas frameworks frontend como Astro con WordPress headless, puedes alojar sus archivos estáticos en el Alojamiento de Sitios Estáticos de Kinsta de forma gratuita. Esto significa que sólo pagas por el alojamiento de WordPress, maximizando la eficiencia y la rentabilidad.
¿Cuál es tu opinión sobre WordPress headless y Astro? ¿Has explorado su potencial para crear soluciones únicas? Comparte tus experiencias en la sección de comentarios más abajo.
Deja una respuesta