Migrare da WordPress a Next.js: guida passo passo 2026
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.
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 Spider — Crawl 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 Console — Esportazione delle 1000 query più performanti + landing page. Identifica le URL da preservare assolutamente.
- Wayback Machine — Snapshot storico del sito come riferimento per design e contenuti.
- WordPress phpMyAdmin — Inventario di custom post type, meta field, tassonomie, commenti.
- Google Analytics 4 — Top 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à:
| Metodo | Quando usarlo | Limiti |
|---|---|---|
| WP REST API (/wp-json) | Sito con API aperta, dev tecnico | Autenticazione, paginazione, media separati |
| Plugin WP All Export | Volume importante, struttura custom | 59-99 €, curva di apprendimento |
| Esportazione XML nativa WP | Sito piccolo, contenuti standard | Niente media, struttura rigida |
| Scraping con Puppeteer | Sito di cui non hai più l'admin | Lento, 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.
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.
/** @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:
- Elencare tutte le URL WordPress (Screaming Frog o Google Analytics)
- Ordinare per traffico organico su 12 mesi (focus sul top 80% del traffico)
- Mappare ogni vecchia URL alla nuova URL Next.js
- Configurare le 301 in .htaccess (Apache) o nei rewrites Next.js + Cloudflare
- Testare ogni mapping con curl -I o Screaming Frog in modalità redirect-check
- Inviare la nuova sitemap a Search Console il giorno del go-live
- Monitorare i 404 in Search Console per 4-6 settimane, aggiungere i redirect mancanti
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:
| Fase | Durata | Azione |
|---|---|---|
| Pre-deployment | G-7 | Sito Next.js completo in staging, audit SEO, test Lighthouse, validazione cliente |
| Snapshot WordPress | G-1 | Backup completo WP (DB + file), conservato 3 mesi |
| Switch DNS | G0 mezzanotte | TTL 300s per 24h, osservazione della propagazione |
| Invio sitemap | G0+2h | Sitemap.xml inviata a GSC + Bing Webmaster Tools |
| Monitoraggio intensivo | G0 a G+7 | Errori 404, Search Console, traffico GA4, alert Sentry/Datadog |
| Aggiustamenti | G+7 a G+30 | Redirect mancanti, ottimizzazioni CWV |
| Validazione finale | G+30 a G+60 | Indicizzazione completa verificata, ranking confrontato pre/post |
Guadagni misurati dopo la migrazione
Metriche tipiche osservate su oltre 30 migrazioni OptionWeb (siti PMI 50-500 pagine):
- TTFB — WordPress 600-1500ms → Next.js static 30-80ms (diviso per 10)
- Lighthouse Performance — WordPress 45-65 → Next.js 95-100 su mobile
- Lighthouse SEO — WordPress 85 (spesso) → Next.js 100/100 in modo sistematico
- Costi di hosting — WordPress condiviso 15 €/mese → static export su CDN 5-10 €/mese (Cloudflare Pages, Vercel free, Netlify free)
- Falle di sicurezza — Superficie 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)
Read next
Next.js vs WordPress nel 2026: quale scegliere per una PMI belga?
Confronto onesto Next.js vs WordPress per PMI: costi reali, prestazioni, SEO, manutenzione, sicurezza, flessibilità. Quando scegliere l'uno o l'altro in base al tuo profilo.
Next.js static export e Core Web Vitals: il playbook 2026
Tutte le ottimizzazioni applicate sui siti Next.js static export per raggiungere 95+ PageSpeed mobile: strategia font, CSS, LCP, INP, CLS, trappole Framer Motion, hosting.
SEO tecnico di un sito statico Next.js: checklist completa 2026
Tutto quello da configurare tecnicamente perché un sito Next.js static export raggiunga 100/100 SEO: metadata, JSON-LD, sitemap, hreflang, robots, Speakable, schema avanzati.
