En vivo · estado OK
Back to blog
Desarrollo14 min

Migrar de WordPress a Next.js: guía paso a paso 2026

TL;DR

Migrar un sitio WordPress a Next.js sigue 7 pasos: auditoría del contenido existente, exportación vía WP REST API o plugin, elección de la arquitectura Next.js (app router + exportación estática), rediseño de UI, configuración de las 301 para preservar el SEO, validación en Search Console, despliegue progresivo. Una migración bien hecha mantiene el ranking y divide el TTFB por 10. Sitios OptionWeb: 4-8 semanas según el volumen.

Julien Daniel
ByJulien Daniel
Founder & CTO, OptionWeb
Share
Diagrama de migración WordPress a Next.js con flujo de contenido y redirecciones

WordPress aún impulsa el 43% de la web mundial en 2026, pero sus límites aparecen rápido: rendimiento mediocre out-of-the-box (TTFB 600-1500ms típico), gran superficie de ataque (43% de los hackeos web apuntan a WordPress según Sucuri 2024), dependencia de plugins, costes ocultos en actualizaciones. Para muchas pymes que acompañamos en OptionWeb, la pregunta ya no es '¿hay que migrar?' sino '¿cómo migrar sin romper el SEO?'. Aquí está el playbook completo aplicado en más de 30 migraciones.

1. Por qué migrar (y cuándo no)

Migrar tiene sentido en 4 casos: rendimiento crítico para el negocio (e-commerce, lead gen agresivo), rediseño mayor ya previsto, equipo técnico que quiere salir del legacy plugin hell, o necesidad de escalar internacionalmente (i18n nativo de Next.js supera a WPML/Polylang).

No migrar si: equipo editorial no técnico sin alternativa CMS, presupuesto < 10 000 €, rediseño solo para 'ser moderno' (motivo real invisible), o sitio con >100 plugins críticos sin equivalente Next.js.

2. Auditoría previa del sitio WordPress

La auditoría es el paso más descuidado y más crítico. Saltarse esta fase = pérdida garantizada de SEO y bugs en producción.

Herramientas para una auditoría completa:

  • Screaming Frog SEO SpiderCrawl de todas las URLs (gratis hasta 500 URLs, 159 £/año por encima). Exportación CSV de URLs, status codes, meta tags, H1, enlaces internos.
  • Google Search ConsoleExportación de las 1000 consultas más eficaces + páginas de aterrizaje. Identifica las URLs que hay que preservar sí o sí.
  • Wayback MachineSnapshot histórico del sitio como referencia de diseño y contenido.
  • WordPress phpMyAdminInventario de post types personalizados, meta fields, taxonomías, comentarios.
  • Google Analytics 4Top 50 páginas por sesiones, comportamiento de usuario, tasa de rebote. Estas páginas tienen que funcionar sí o sí tras la migración.

Entregables de la auditoría: tabla Excel con todas las URLs (antiguas + futuras), lista de plugins críticos con alternativas Next.js, inventario de medios (tamaño total, formatos), lista de integraciones externas (pago, CRM, mailing, chat), boceto de la nueva estructura de URLs.

3. Exportación del contenido

Tres métodos según volumen y complejidad:

MétodoCuándo usarLímites
WP REST API (/wp-json)Sitio con API abierta, dev técnicoAutenticación, paginación, medios separados
Plugin WP All ExportVolumen importante, estructura custom59-99 €, curva de aprendizaje
Exportación XML nativa WPSitio pequeño, contenido estándarSin medios, estructura rígida
Scraping con PuppeteerSitio del que ya no tienes adminLento, frágil, legalidad dudosa

En OptionWeb combinamos WP REST API (contenido estructurado) + un script Node.js que descarga los medios en paralelo. Los artículos se convierten a MDX o JSON según la arquitectura objetivo. Calcular 1-2 días para 500 artículos.

scripts/export-wp.tsts
import fs from 'node:fs/promises';
import path from 'node:path';

const WP_API = 'https://votre-site.com/wp-json/wp/v2';

async function fetchAllPosts() {
  const allPosts = [];
  let page = 1;
  while (true) {
    const res = await fetch(`${WP_API}/posts?per_page=100&page=${page}&_embed`);
    if (!res.ok) break;
    const posts = await res.json();
    if (posts.length === 0) break;
    allPosts.push(...posts);
    page++;
  }
  return allPosts;
}

const posts = await fetchAllPosts();
await fs.writeFile('content/posts.json', JSON.stringify(posts, null, 2));

4. Arquitectura Next.js objetivo

Recomendación 2026 para migración WordPress → Next.js: App Router + exportación estática. Ventajas: despliegue en cualquier servidor (sin Node.js), TTFB en milisegundos, inmune a las vulnerabilidades de WordPress, escalabilidad infinita.

next.config.mjsts
/** @type {import('next').NextConfig} */
const nextConfig = {
  output: 'export',
  images: { unoptimized: true },
  trailingSlash: true,
  i18n: undefined, // gérer via app/[lang]/ pour static export
};
export default nextConfig;

Estructura de carpetas recomendada:

  • app/[lang]/Rutas multilingües, page.tsx, [slug]/page.tsx, blog/page.tsx, blog/[slug]/page.tsx
  • content/JSON o MDX del contenido migrado, con esquema Zod para validación en build
  • components/Componentes React (sustituyen los bloques Gutenberg)
  • public/Medios migrados desde wp-content/uploads/
  • lib/Utilidades (markdown a React, mapa hreflang, etc.)

5. Rediseño UI y componentes

Error #1: intentar clonar el tema WordPress pixel-perfect. Es largo, aburrido y desperdicia la oportunidad.

Enfoque recomendado: partir de los wireframes de cada tipo de página (home, página de servicio, artículo de blog, contacto, etc.), rediseñar con componentes Tailwind o un sistema de diseño propio (shadcn/ui, Radix Themes), añadir animaciones modernas (Framer Motion), pasar a mobile-first.

6. Redirecciones 301 (preservar el SEO)

El punto más crítico de toda migración. Una sola URL importante mal redirigida = pérdida de posiciones en Google. Procedimiento riguroso:

  1. Listar todas las URLs WordPress (Screaming Frog o Google Analytics)
  2. Ordenar por tráfico orgánico de los últimos 12 meses (foco en el top 80% del tráfico)
  3. Mapear cada URL antigua a la nueva URL Next.js
  4. Configurar las 301 en .htaccess (Apache) o rewrites de Next.js + Cloudflare
  5. Probar cada mapeo con curl -I o Screaming Frog en modo redirect-check
  6. Enviar el nuevo sitemap a Search Console el día del despliegue
  7. Monitorizar las 404 en Search Console durante 4-6 semanas, añadir redirecciones faltantes
.htaccessapache
RewriteEngine On

# Redirections 301 anciennes URLs WordPress
Redirect 301 /?p=123 /fr/article-titre-canonique/
Redirect 301 /category/seo /fr/blog/?cat=seo
Redirect 301 /author/admin /fr/equipe/

# Pattern WordPress permalinks date-based
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/([^/]+)/?$ /fr/blog/$4/ [R=301,L]

7. Despliegue y validación

Plan de despliegue tipo:

FaseDuraciónAcción
Pre-despliegueD-7Sitio Next.js completo en staging, auditoría SEO, tests Lighthouse, validación cliente
Snapshot WordPressD-1Backup completo WP (BD + ficheros), conservado 3 meses
Cambio DNSD0 medianocheTTL 300s durante 24h, observación de propagación
Envío sitemapD0+2hSitemap.xml enviado a GSC + Bing Webmaster Tools
Monitorización intensivaD0 a D+7Errores 404, Search Console, tráfico GA4, alertas Sentry/Datadog
AjustesD+7 a D+30Redirecciones faltantes, optimizaciones CWV
Validación finalD+30 a D+60Indexación completa verificada, ranking comparado pre/post

Ganancias medidas tras la migración

Métricas típicas observadas en más de 30 migraciones OptionWeb (sitios pyme 50-500 páginas):

  • TTFBWordPress 600-1500ms → Next.js static 30-80ms (dividido por 10)
  • Lighthouse PerformanceWordPress 45-65 → Next.js 95-100 en móvil
  • Lighthouse SEOWordPress 85 (a menudo) → Next.js 100/100 sistemático
  • Costes de hostingWordPress compartido 15 €/mes → exportación estática en CDN 5-10 €/mes (Cloudflare Pages, Vercel free, Netlify free)
  • VulnerabilidadesSuperficie de ataque dividida por ~50 (sin admin WP, sin BD, sin ejecución PHP)
  • Tráfico orgánico+10 a +30% en 3-6 meses gracias a las ganancias CWV (señales de ranking de Google)
Tags#nextjs#wordpress#migracion#static-export#seo#performance