Live · stato OK
Back to blog
Sviluppo14 min

Migrare da WordPress a Next.js: guida passo passo 2026

TL;DR

Migrare un sito WordPress a Next.js segue 7 passi: audit del contenuto esistente, esportazione tramite WP REST API o plugin, scelta dell'architettura Next.js (app router + static export), ridisegno UI, configurazione delle 301 per preservare la SEO, validazione su Search Console, deployment progressivo. Una migrazione ben condotta mantiene il ranking e divide il TTFB per 10. Siti OptionWeb: 4-8 settimane secondo il volume.

Julien Daniel
ByJulien Daniel
Founder & CTO, OptionWeb
Share
Schema di migrazione WordPress a Next.js con flusso dei contenuti e redirect

WordPress alimenta ancora il 43% del web mondiale nel 2026, ma i suoi limiti emergono in fretta: performance mediocre out-of-the-box (TTFB 600-1500ms tipico), grande superficie d'attacco (43% degli hack web colpisce WordPress secondo Sucuri 2024), dipendenza dai plugin, costi nascosti negli aggiornamenti. Per molte PMI che seguiamo in OptionWeb, la domanda non è più 'bisogna migrare?' ma 'come migrare senza rompere la SEO?'. Ecco il playbook completo applicato in oltre 30 migrazioni.

1. Perché migrare (e quando non farlo)

Migrare ha senso in 4 casi: performance critica per il business (e-commerce, lead gen aggressivo), restyling importante già previsto, team tecnico che vuole uscire dal legacy plugin hell, oppure necessità di scalare a livello internazionale (i18n nativo Next.js batte WPML/Polylang).

Non migrare se: team editoriale non tecnico senza alternativa CMS, budget < 10.000 €, restyling solo per 'essere moderni' (vera ragione invisibile), oppure sito con >100 plugin critici senza equivalente Next.js.

2. Audit preliminare del sito WordPress

L'audit è il passo più trascurato e più critico. Saltare questa fase = perdita garantita di SEO e bug in produzione.

Strumenti per un audit completo:

  • Screaming Frog SEO SpiderCrawl di tutte le URL (gratuito fino a 500 URL, 159 £/anno oltre). Esportazione CSV di URL, status code, meta tag, H1, link interni.
  • Google Search ConsoleEsportazione delle 1000 query più performanti + landing page. Identifica le URL da preservare assolutamente.
  • Wayback MachineSnapshot storico del sito come riferimento per design e contenuti.
  • WordPress phpMyAdminInventario di custom post type, meta field, tassonomie, commenti.
  • Google Analytics 4Top 50 pagine per sessioni, comportamento utente, frequenza di rimbalzo. Queste pagine devono assolutamente funzionare dopo la migrazione.

Deliverable dell'audit: tabella Excel con tutte le URL (vecchie + nuove), elenco dei plugin critici con alternative Next.js, inventario dei media (dimensione totale, formati), elenco delle integrazioni esterne (pagamento, CRM, mailing, chat), bozza della nuova struttura URL.

3. Esportazione dei contenuti

Tre metodi a seconda del volume e della complessità:

MetodoQuando usarloLimiti
WP REST API (/wp-json)Sito con API aperta, dev tecnicoAutenticazione, paginazione, media separati
Plugin WP All ExportVolume importante, struttura custom59-99 €, curva di apprendimento
Esportazione XML nativa WPSito piccolo, contenuti standardNiente media, struttura rigida
Scraping con PuppeteerSito di cui non hai più l'adminLento, fragile, legalità dubbia

In OptionWeb combiniamo WP REST API (contenuti strutturati) + uno script Node.js per il download in parallelo dei media. Gli articoli vengono convertiti in MDX o JSON secondo l'architettura obiettivo. Conta 1-2 giorni per 500 articoli.

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. Architettura Next.js obiettivo

Raccomandazione 2026 per migrazione WordPress → Next.js: App Router + static export. Vantaggi: deployment su qualsiasi server (no Node.js richiesto), TTFB in pochi millisecondi, immune alle falle WordPress, scalabilità 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;

Struttura di cartelle consigliata:

  • app/[lang]/Rotte multilingua, page.tsx, [slug]/page.tsx, blog/page.tsx, blog/[slug]/page.tsx
  • content/JSON o MDX dei contenuti migrati, con schema Zod per la validazione in build
  • components/Componenti React (sostituiscono i blocchi Gutenberg)
  • public/Media migrati da wp-content/uploads/
  • lib/Utility (markdown a React, mappa hreflang, ecc.)

5. Ridisegno UI e componenti

Errore #1: provare a clonare il tema WordPress pixel-perfect. Lungo, noioso e si perde l'occasione.

Approccio consigliato: ripartire dai wireframe per ogni tipo di pagina (homepage, pagina servizio, articolo blog, contatto, ecc.), ridisegnare con componenti Tailwind o un design system custom (shadcn/ui, Radix Themes), aggiungere animazioni moderne (Framer Motion), passare al mobile-first.

6. Redirect 301 (preservare la SEO)

Il punto più critico di ogni migrazione. Una sola URL importante mal reindirizzata = perdita di posizioni Google. Procedura rigorosa:

  1. Elencare tutte le URL WordPress (Screaming Frog o Google Analytics)
  2. Ordinare per traffico organico su 12 mesi (focus sul top 80% del traffico)
  3. Mappare ogni vecchia URL alla nuova URL Next.js
  4. Configurare le 301 in .htaccess (Apache) o nei rewrites Next.js + Cloudflare
  5. Testare ogni mapping con curl -I o Screaming Frog in modalità redirect-check
  6. Inviare la nuova sitemap a Search Console il giorno del go-live
  7. Monitorare i 404 in Search Console per 4-6 settimane, aggiungere i redirect mancanti
.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. Deployment e validazione

Piano di deployment tipo:

FaseDurataAzione
Pre-deploymentG-7Sito Next.js completo in staging, audit SEO, test Lighthouse, validazione cliente
Snapshot WordPressG-1Backup completo WP (DB + file), conservato 3 mesi
Switch DNSG0 mezzanotteTTL 300s per 24h, osservazione della propagazione
Invio sitemapG0+2hSitemap.xml inviata a GSC + Bing Webmaster Tools
Monitoraggio intensivoG0 a G+7Errori 404, Search Console, traffico GA4, alert Sentry/Datadog
AggiustamentiG+7 a G+30Redirect mancanti, ottimizzazioni CWV
Validazione finaleG+30 a G+60Indicizzazione completa verificata, ranking confrontato pre/post

Guadagni misurati dopo la migrazione

Metriche tipiche osservate su oltre 30 migrazioni OptionWeb (siti PMI 50-500 pagine):

  • TTFBWordPress 600-1500ms → Next.js static 30-80ms (diviso per 10)
  • Lighthouse PerformanceWordPress 45-65 → Next.js 95-100 su mobile
  • Lighthouse SEOWordPress 85 (spesso) → Next.js 100/100 in modo sistematico
  • Costi di hostingWordPress condiviso 15 €/mese → static export su CDN 5-10 €/mese (Cloudflare Pages, Vercel free, Netlify free)
  • Falle di sicurezzaSuperficie d'attacco divisa per ~50 (niente admin WP, niente DB, niente esecuzione PHP)
  • Traffico organico+10 a +30% in 3-6 mesi grazie ai guadagni CWV (segnali di ranking Google)
Tags#nextjs#wordpress#migrazione#static-export#seo#performance