Tutorial de SSG con Gatsby y WordPress

Contents

Tutorial de SSG con Gatsby y WordPress

En este artículo detallado exploraremos cómo montar un sistema de Static Site Generation (SSG) usando Gatsby como framework de front-end y WordPress como gestor de contenidos en modo headless CMS. Cubriremos desde los conceptos básicos hasta la puesta en producción, pasando por configuración, optimización, buenas prácticas y problemas comunes.

1. ¿Por qué elegir Gatsby WordPress

Combinar Gatsby con WordPress ofrece lo mejor de ambos mundos:

  • Rendimiento excelente: Gatsby genera páginas estáticas ultra rápidas.
  • Escalabilidad: WordPress continúa gestionando el contenido Gatsby se centra en la entrega.
  • SEO avanzado: HTML pre-renderizado, imágenes optimizadas y meta tags.
  • Seguridad: Al servir siempre contenido estático, la superficie de ataque se reduce.

2. Arquitectura general

La arquitectura típica consta de:

Componente Función
WordPress (Headless) Almacena y gestiona posts, páginas y media. Expone datos via REST API o GraphQL.
Gatsby Consume datos, genera páginas estáticas y optimiza assets (JS/CSS/Imagenes).
CDN/Hosting Sirve el sitio estático desde Netlify, Vercel, AWS S3, etc.

3. Requisitos previos

  • Node.js (v14 ).
  • NPM o Yarn.
  • Instalación de WordPress (v5.0 ) con acceso de administrador.
  • Permisos para activar plugins en WordPress.

4. Configurar WordPress como Headless CMS

  1. Instalar plugin WPGraphQL: en tu admin de WordPress busca y activa wp-graphql.
  2. Permitir CORS: si tu Gatsby estará en otro dominio, ajusta cabeceras. Ejemplo en plugin WPGraphQL CORS.
  3. Crear contenido: posts, páginas, categorías, imágenes destacadas.

5. Iniciar proyecto Gatsby

En tu terminal:

npx gatsby new mi-sitio-ssg

Accede al directorio:

cd mi-sitio-ssg

5.1 Instalar plugin de WordPress

Agrega en el proyecto:

npm install gatsby-source-wordpress-experimental

El plugin experimental es la mejor opción para WPGraphQL.

5.2 Configurar gatsby-config.js

module.exports = {
  plugins: [
    {
      resolve: gatsby-source-wordpress-experimental,
      options: {
        url: https://tudominio.com/graphql,
        schema: { requestConcurrency: 5 },
        html: { useGatsbyImage: true }
      }
    },
    gatsby-plugin-image,
    gatsby-plugin-sharp,
    gatsby-transformer-sharp
  ]
}

6. Consultar datos con GraphQL

Arranca el servidor de desarrollo:

gatsby develop

Visita http://localhost:8000/___graphql para explorar tus endpoints.

6.1 Ejemplo de consulta

{
  allWpPost {
    nodes {
      title
      excerpt
      slug
      featuredImage {
        node {
          gatsbyImage(width: 600)
        }
      }
    }
  }
}

7. Crear Plantillas y Páginas

En src/templates, crea post-template.js:

import React from react
import { graphql } from gatsby
import { GatsbyImage, getImage } from gatsby-plugin-image

export default function PostTemplate({ data }) {
  const post = data.wpPost
  const image = getImage(post.featuredImage.node)
  return (
    ltarticle style=max-width:800px margin:40px autogt
      lth2gt{post.title}lt/h2gt
      {image ampamp ltGatsbyImage image={image} alt={post.title} /gt}
      ltdiv dangerouslySetInnerHTML={{ __html: post.content }} /gt
    lt/articlegt
  )
}

export const query = graphql
  query(id: String!) {
    wpPost(id: { eq: id }) {
      title
      content
      featuredImage {
        node {
          gatsbyImage(width: 800)
        }
      }
    }
  }

En gatsby-node.js genera páginas dinámicas:

exports.createPages = async ({ graphql, actions }) => {
  const { createPage } = actions
  const result = await graphql(
    {
      allWpPost {
        nodes {
          id
          slug
        }
      }
    }
  )
  result.data.allWpPost.nodes.forEach(post =gt {
    createPage({
      path: post.slug,
      component: require.resolve(./src/templates/post-template.js),
      context: { id: post.id },
    })
  })
}

8. Optimización de imágenes

Gatsby Image permite:

  • Lazy loading
  • Formatos modernos (WebP, AVIF)
  • Placeholders (dominant color o blur)

9. SEO y Performance

  • Usa gatsby-plugin-react-helmet para meta tags.
  • Configura sitemap con gatsby-plugin-sitemap.
  • Genera robots.txt vía gatsby-plugin-robots-txt.
  • Mide rendimiento con Google Lighthouse.

10. Despliegue en producción

  1. Pushea tu proyecto a un repositorio (GitHub/GitLab).
  2. Configura un servicio de CI/CD como Netlify o Vercel.
  3. Define variables de entorno (URL de GraphQL).
  4. Automatiza builds y deploys.

11. Ventajas y desafíos

Ventajas Desafíos
Carga ultrarrápida Complejidad inicial de configuración
Separación de contenido y presentación Gestión de preview en WordPress
Escalabilidad y seguridad Actualización de datos requiere rebuild completo

12. Conclusiones

Implementar un SSG con Gatsby y WordPress permite crear sitios rápidos, seguros y escalables. Aunque la curva de aprendizaje puede ser alta, el resultado justifica el esfuerzo, especialmente para proyectos donde el rendimiento y el SEO son críticos.

Para profundizar más, consulta las siguientes fuentes:



Acepto donaciones de BAT's mediante el navegador Brave 🙂



Deja una respuesta

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