Principiante
    34 min

    Headless WordPress + Next.js explicado y construido paso a paso

    En este tutorial te enseño paso a paso cómo crear una web Headless usando WordPress como CMS y Next.js como frontend moderno.

    ¿Quieres construir sitios ultra rápidos combinando la facilidad de WordPress con la potencia de frameworks modernos?
    En este tutorial aprenderás a crear un sistema Headless usando WordPress como backend y Next.js como frontend.

    Veremos paso a paso cómo configurar WordPress, crear un proyecto en Next.js, consumir la API REST de WordPress y renderizar posts en una aplicación moderna y totalmente desacoplada.

    1. ¿Qué es un CMS y qué es Headless?

    WordPress es un CMS (Content Management System), es decir, una plataforma que permite a cualquier usuario crear, editar y administrar contenido. Tradicionalmente, WordPress combina:

    • Backend: base de datos, plugins, lógica de negocio.
    • Frontend: el theme encargado del HTML y CSS.

    En un enfoque Headless, se separa completamente el backend del frontend. WordPress sigue administrando contenido, pero el renderizado lo hace Next.js consultando la API de WordPress.

    Esto permite:

    • Mayor velocidad gracias a contenido estático.
    • Más seguridad al no exponer el theme tradicional.
    • Elegir tu stack: Next.js, Gatsby, Nuxt, SvelteKit, etc.

    2. Requisitos previos

    • Una instalación de WordPress.
    • Node.js instalado.
    • Conocimientos básicos de JavaScript.

    El tutorial recomienda usar Docker o Laradock para levantar WordPress fácilmente.

    3. Crear el proyecto con Next.js

    En tu terminal ejecuta:

    
    npx create-next-app@latest tutorial-headless
    

    Luego:

    
    cd tutorial-headless
    npm run dev
    

    4. Crear variables de entorno

    En la raíz del proyecto, crea .env.local:

    
    NEXT_PUBLIC_WORDPRESS_API=https://tusitio.com/wp-json/wp/v2
    

    El prefijo NEXT_PUBLIC_ permite usar la variable tanto en el servidor como en el cliente.

    5. Crear librería para la API de WordPress

    Crea la carpeta lib/ y dentro un archivo wordpress.js:

    
    const API_URL = process.env.NEXT_PUBLIC_WORDPRESS_API || "";
    
    // fetch genérico
    export async function fetchFromWP(endpoint) {
      const response = await fetch(API_URL + endpoint);
      if (!response.ok) {
        console.error("Error:", response.statusText);
        throw new Error("Error al consultar WordPress");
      }
      return response.json();
    }
    
    // obtener posts
    export async function getPosts() {
      return fetchFromWP("/posts");
    }
    
    // obtener post por slug
    export async function getPostBySlug(slug) {
      const posts = await fetchFromWP(`/posts?slug=${slug}`);
      return posts.length ? posts[0] : null;
    }
    

    6. Mostrar posts en Next.js

    Modifica app/page.js:

    
    import Link from "next/link";
    import { getPosts } from "@/lib/wordpress";
    
    export default async function Home() {
      const posts = await getPosts();
    
      return (
        
    {posts.map((post) => (

    {post.title.rendered}

    ))}
    ); }

    7. Crear página dinámica por slug

    Crea:

    app/posts/[slug]/page.js

    Y agrega lo siguiente:

    
    import { getPostBySlug } from "@/lib/wordpress";
    
    export default async function PostPage({ params }) {
      const post = await getPostBySlug(params.slug);
    
      if (!post) {
        return 

    Post no encontrado

    ; } return (

    {post.title.rendered}

    ); }

    8. Mejoras recomendadas

    • Estilizar el proyecto con Tailwind o CSS Modules.
    • Definir interfaces y tipos (TypeScript).
    • Manejar categorías, páginas, autores, etc.
    • Implementar ISR o caching.

    9. Repositorio del proyecto

    Código completo: 👉 tutorial-headless

    Pensamientos finales

    Combinar WordPress con Next.js en un entorno Headless te permite crear sitios rápidos, seguros y con total libertad tecnológica.

    Este tutorial es una base perfecta para proyectos modernos como blogs, landings, sitios corporativos o e-commerce headless.

    ¡Espero que te sirva para tus próximos desarrollos!

    Temas cubiertos

    • Introducción al concepto Headless.
    • Ventajas del enfoque Headless
    • Instalación de Next.js con create-next-app
    • Función base para hacer fetch a WordPress
    • Creación de rutas dinámicas en Next.js
    • Propuestas de mejora (estilos, interfaces, más endpoints…)