Migrare un sito WordPress da un hosting all'altro, esportare contenuti per un nuovo progetto, clonare un sito di test in produzione: sono operazioni frequenti che si affrontano almeno una volta nella vita di un sito. Fatte male, distruggono settimane di lavoro. Fatte bene, sono questione di un'ora.
In questa guida vediamo gli strumenti principali, i loro limiti e il workflow tipico per migrazioni sicure.
Strumento 1: WordPress Importer/Exporter (built-in)
L'export nativo di WordPress, in Strumenti → Esporta.
Cosa esporta
- Articoli, pagine, custom post types
- Categorie, tag, tassonomie
- Commenti
- Link ai media (URL, NON i file media)
Cosa NON esporta
- File media (immagini, PDF) — solo i riferimenti
- Tema, plugin
- Impostazioni, widget, menu (in parte)
- Utenti (esportati solo se autori di contenuti)
Workflow
- Sito sorgente: Strumenti → Esporta → scegli "Tutto il contenuto" o sezione specifica → scarica XML (WXR)
- Sito destinazione: Strumenti → Importa → installa "WordPress Importer" → carica XML
- Mappa autori (utenti del nuovo sito) e scegli se importare allegati (scarica i media dal sito vecchio se ancora online)
Quando usarlo
- Migrazione contenuti tra siti diversi (rebrand, separazione siti)
- Backup contenuti per archivio
- Trasferimento articoli da blog a nuovo blog
Limiti
Per siti grandi l'XML diventa pesante e l'import si interrompe per timeout PHP. Soluzioni:
- WP-CLI:
wp import file.xml --authors=createbypassa i limiti web - WXR Splitter: divide l'XML in pezzi più piccoli
- Plugin alternativi (vedi sotto)
Strumento 2: All-in-One WP Migration
Plugin gratuito tra i più usati per migrazioni complete. Workflow:
- Sul sito sorgente: installa il plugin → All-in-One WP Migration → Esporta → scarica file
.wpress - Sul sito destinazione: installazione WordPress fresca + plugin → Importa → carica il file
- Il plugin rimpiazza completamente il sito destinazione con quello sorgente (database, media, plugin, tema)
Pro
- Semplicità estrema: 2-3 click
- Sostituzione URL automatica (gestisce serializzati)
- Gratuito per file fino a 256 MB
Contro
- Per file più grandi serve estensione a pagamento (canone una tantum o annuo)
- Sovrascrive completamente il sito destinazione
- Non per migrazioni selettive (solo articoli o solo media)
Strumento 3: Duplicator
Plugin per clonazione completa. Genera un "package" (zip + installer PHP) che si carica sul nuovo hosting e installa il sito clonato.
Workflow
- Plugin Duplicator sul sito sorgente → Crea pacchetto → scarica
installer.php+archive.zip - Carica entrambi nella root del nuovo dominio (via FTP)
- Visita
nuovodominio.it/installer.php→ segui wizard (DB credentials del nuovo sito, ricerca/sostituisce URL automatica) - Setup completato in pochi minuti
Pro
- Funziona anche su nuovi domini "vuoti"
- Search/replace URL incluso
- Installer in PHP indipendente da WordPress: utile per setup iniziali
Contro
- Versione free ha limiti (file size, scheduled backups)
- Versione Pro per progetti seri (canone annuo nell'ordine di alcune decine di euro)
Strumento 4: UpdraftPlus / WP Migrate
UpdraftPlus nasce per backup ma supporta migrazioni con add-on Migrator (a pagamento). Buono se già lo usi per backup.
WP Migrate (di Delicious Brains) è premium, professionale, con supporto a CLI, push/pull tra ambienti, find/replace SQL safe. Canone annuo nell'ordine di centinaia di euro: per agenzie e progetti enterprise.
Strumento 5: WP-CLI (per developer)
Da terminale SSH:
wp db export backup.sql
wp search-replace 'vecchiosito.it' 'nuovosito.it' --skip-columns=guid
wp db import backup.sql
Strumento più potente e veloce per chi ha accesso shell. Bypassa tutti i limiti dei plugin.
Workflow tipico per migrazione completa
Esempio: migrazione da hosting A a hosting B mantenendo lo stesso dominio.
- Backup completo del sito sorgente (tutto: file + database)
- Verifica integrità del backup (estraibile, importabile)
- Predisponi nuovo hosting con WordPress vuoto installato
- Migra con All-in-One WP Migration o Duplicator
- Test su URL temporaneo (subdomain o file hosts modificato)
- Cambio DNS: A record dal vecchio al nuovo IP, propagazione 1-24 ore
- Test post-cambio DNS: SSL, link interni, email
- Pulizia: rimuovi plugin di migrazione, file installer, vecchio backup
- Mantieni vecchio hosting attivo per 7-14 giorni come fallback
Cambio dominio: il search/replace
Quando cambi anche dominio:
wp search-replace 'http://vecchiosito.it' 'https://nuovosito.it' --all-tables
Plugin "Better Search Replace" (gratis) fa lo stesso da interfaccia web. Importante: usa la modalità "dry run" prima per vedere cosa verrebbe modificato.
Mai usare UPDATE wp_posts SET post_content = REPLACE(...) con SQL grezzo: rompe i serializzati PHP (widget, configurazioni plugin) che richiedono ricalcolo lunghezza stringhe.
Errori comuni
- Import XML che si interrompe: PHP timeout. Usa CLI o suddividi.
- Media non importati: il WordPress Importer non trasferisce file, solo URL. Lascia "Importa allegati" o copia manualmente la cartella
wp-content/uploads/. - Search/replace incompleto: alcuni URL hardcoded in widget o options restano. Verifica con grep nel database.
- Permalinks rotti dopo migrazione: vai in Impostazioni → Permalink e clicca "Salva" per rigenerare
.htaccess. - Caratteri speciali corrotti: encoding sbagliato in import. Esporta come UTF-8.
- Plugin attivi non compatibili sul nuovo hosting: PHP version diverso, estensioni mancanti. Test su staging.
- SSL misto dopo migrazione HTTPS: link interni in HTTP. Plugin "Really Simple SSL" risolve.
In sintesi
Per esportare solo contenuti, WordPress Importer/Exporter basta. Per migrazioni complete, All-in-One WP Migration (gratis fino a 256 MB) o Duplicator sono lo standard. Per agenzie con molti progetti, WP Migrate o WP-CLI sono più produttivi.
Quando facciamo una migrazione, lavoriamo sempre con backup pre/post, ambiente di staging dedicato e finestra di cambio DNS pianificata fuori orario di traffico. La preparazione vale 80% del lavoro: la migrazione effettiva, fatta bene, è veloce. Fatta male, è una notte di troubleshooting.
