Cercare e sostituire nel database di WordPress
WordPress non conserva l'indirizzo del Suo sito in un unico punto. Si trova nelle impostazioni, ma anche letteralmente nei Suoi articoli, nelle immagini e nelle impostazioni di temi, plugin e widget. Se cambia l'indirizzo, deve quindi sostituirlo in tutto il database. Qui può leggere come farlo in modo sicuro e perché un semplice comando SQL può danneggiare il Suo sito.
Quando Le serve?
- Il Suo sito era su http e ora funziona su https, e vede contenuto misto (una pagina su https che carica alcuni elementi tramite http). Veda anche Nessun lucchetto o "non sicuro": risolvere il contenuto misto.
- Sta trasferendo il Suo sito su un altro dominio, oppure da un indirizzo temporaneo al Suo dominio effettivo.
- Ha creato manualmente una copia su un altro indirizzo, ad esempio un sito di test.
Se clona un sito con Installatron o con il Website Manager, gli indirizzi nella copia vengono adattati automaticamente. Veda Clonare un sito e creare un ambiente di test (staging). Se si trasferisce soltanto a un altro hosting mantenendo lo stesso dominio, non è necessario modificare nulla.
Perché non un semplice SQL REPLACE?
In phpMyAdmin è possibile sostituire tutti i testi con un unico comando SQL. Non lo faccia per gli indirizzi. Molte impostazioni sono salvate in forma serializzata: PHP vi aggiunge la lunghezza di ogni testo. Ecco come appare:
s:27:"http://example.com/logo.png";
s:27 significa: segue un testo di 27 caratteri. Se lo trasforma in https://, il testo diventa lungo 28 caratteri, ma l'indicazione resta 27. PHP non riesce più a leggere il valore e l'impostazione scompare senza alcun avviso. Potrebbe quindi vedere, ad esempio, un menu vuoto, un logo scomparso o widget spariti. Utilizzi perciò uno strumento che aggiorni queste lunghezze.
Prima di tutto un backup
La ricerca e sostituzione ha effetto immediato e non prevede un cestino. Prima di iniziare, esporti il Suo database, veda Esportare un database, oppure crei con un clic un backup aggiuntivo in WebOké Backups, veda WebOké Backups: visualizzare, ripristinare o scaricare un backup.
Metodo 1: WP-CLI nel Terminal o tramite SSH
WP-CLI è lo strumento ufficiale a riga di comando di WordPress. Da noi lo utilizza come comando wp nel Terminal di DirectAdmin o tramite SSH. È disponibile solo nei pacchetti con SSH. Quali siano questi pacchetti, può leggerlo in Il terminale nel Suo browser.
- Apra il Terminal e vada nella cartella del Suo WordPress:
cd domains/example.com/public_html - Verifichi prima cosa cambierebbe, senza modificare nulla:
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run
Vedrà per ogni tabella quante sostituzioni verrebbero effettuate. - Se il risultato è corretto, esegua lo stesso comando senza
--dry-run.
Alcune opzioni del comando:
- Senza opzioni aggiuntive, WP-CLI lavora sulle tabelle note a WordPress. Se un plugin utilizza tabelle proprie con lo stesso prefisso (ad esempio
wp_), aggiunga--all-tables-with-prefix. L'opzione--all-tablesinteressa tutte le tabelle del database, anche quelle di un altro sito che eventualmente vi si trovi. --skip-columns=guidlascia invariata la colonnaguidcon gli identificativi fissi degli articoli. WordPress consiglia di non modificarla mai, altrimenti i lettori di feed mostrano di nuovo i vecchi articoli come nuovi.- Se qualcosa non va con impostazioni complesse,
--preciseè più lento ma più accurato.
Metodo 2: un plugin
Se non dispone del Terminal o di SSH, utilizzi un plugin di ricerca e sostituzione che supporti i dati serializzati. Ne trova diversi nella directory dei plugin di wordpress.org. Nella scelta, legga la descrizione: deve indicare che il plugin gestisce correttamente i dati serializzati. Anche in questo caso usi prima la modalità di prova, se il plugin la prevede, e rimuova il plugin una volta terminato. Veda anche Plugin WordPress: scegliere, valutare e fare pulizia.
http:// o https://. Se sostituisce soltanto example.com, modificherà anche indirizzi e-mail come info@example.com e altri testi che contengono il nome. Faccia attenzione anche alla barra finale: se sostituisce https://example.com/ con https://example.net, gli indirizzi verranno uniti tra loro.Solo l'indirizzo di WordPress e l'indirizzo del sito?
Dopo una modifica non riesce più ad accedere alla bacheca, perché WordPress La reindirizza a un indirizzo errato? In tal caso modifichi prima soltanto le righe siteurl e home nella tabella wp_options (il prefisso wp_ potrebbe essere diverso nel Suo caso). Si tratta di testi semplici, che può modificare in phpMyAdmin. Come fare, lo legga in Aprire e usare phpMyAdmin. Successivamente esegua il resto con WP-CLI o con un plugin.
Al termine
- Svuoti la cache del Suo plugin di cache e del Suo browser.
- Se alcune pagine restituiscono un errore 404, vada su Impostazioni > Permalink e salvi una volta. Veda Il mio sito web non funziona dopo il caricamento o il trasferimento.
- Controlli alcune pagine, il menu, il logo e un modulo. Con F12 verifichi nella console se compaiono ancora avvisi relativi al contenuto misto.
Per approfondire
- wp search-replace su developer.wordpress.org (in inglese)
- Trasferire WordPress manualmente: file, database e wp-config.php
Desidera saperne di più? Segua il corso gratuito su WordPress, lezione 3.2 www, reindirizzamenti e contenuto misto o lezione 9.5 Trasferire un sito WordPress.
