Vai al contenuto
Indice
WordPress

Eseguire una ricerca e sostituzione nel database di WordPress

Traduzione automatica. L'originale in inglese è disponibile.

WordPress memorizza URL assoluti in decine di tabelle del database, quindi un cambio di dominio o il passaggio a SSL lascia vecchi indirizzi sparsi tra articoli, opzioni e impostazioni dei plugin: una ricerca e sostituzione è il modo per ripulirli in sicurezza. Questa guida illustra i due modi supportati per farlo in KPanel, perché un terzo metodo molto diffuso corrompe i dati e come verificare il risultato.

Quando ti serve

  • Passaggio da http:// a https:// dopo aver attivato SSL.
  • Cambio di dominio, ad esempio da old-brand.co.nz a new-brand.co.nz.
  • Dopo aver pubblicato lo staging in produzione, quando il nome host dello staging è ancora presente nel database.
  • Dismissione di un vecchio host per le risorse e reindirizzamento di tutti gli URL delle immagini in una volta sola.
  • Correzione di un errore di battitura ripetuto in molti articoli, come un vecchio numero di telefono o il nome di un prodotto fuori produzione.

Una ricerca e sostituzione riscrive le righe di tutte le tabelle contemporaneamente e non esiste un annullamento per singola riga. Esegui un backup prima di iniziare, ogni volta, anche per una modifica che sembra banale. KPanel ne crea uno automaticamente quando usi gli strumenti integrati descritti qui sotto, ma se esegui il comando da solo la responsabilità è tua. Consulta Eseguire un backup.

Perché non puoi semplicemente eseguire un REPLACE SQL

Questo è l'errore più dannoso in assoluto nel lavoro sui database di WordPress, quindi vale la pena capirlo prima di scegliere un metodo.

WordPress memorizza le impostazioni dei plugin, le opzioni dei temi e i dati dei widget come stringhe serializzate PHP. Una stringa serializzata registra la lunghezza di ogni valore al suo interno, in questo modo:

a:1:{s:3:"url";s:26:"http://old-domain.co.nz/x";}

Quel s:26 indica che l'URL è lungo 26 caratteri. Se sostituisci http:// con https:// usando un semplice REPLACE() SQL, il testo diventa di 27 caratteri mentre la lunghezza memorizzata continua a dichiararne 26. A quel punto PHP si rifiuta di deserializzare l'intera opzione e l'impostazione torna silenziosamente vuota. Le impostazioni del customizer del tema spariscono, gli slider perdono le slide, le licenze dei plugin si annullano da sole.

La ricerca e sostituzione di WP-CLI eseguita da KPanel deserializza ogni valore, effettua la sostituzione al suo interno e lo riserializza con le lunghezze corrette. Per questo è l'unico metodo documentato qui.

Non eseguire mai UPDATE wp_options SET option_value = REPLACE(...) o l'equivalente in phpMyAdmin su un database WordPress. Sembra che abbia funzionato, riporta le righe interessate e distrugge silenziosamente ogni impostazione serializzata che ha toccato. L'unico rimedio è ripristinare un backup.

Metodo 1: la scheda Cerca e sostituisci

È la scelta giusta per quasi tutti. È disponibile su ogni piano WordPress.

  1. Accedi a KPanel e fai clic su Siti web nella barra laterale sinistra.
  2. Fai clic sul sito.
  3. Apri la scheda WordPress, poi la sezione Azioni rapide.
  4. Individua la scheda Cerca e sostituisci e fai clic su Configura.
  5. Inserisci il testo esistente in Trova (valore vecchio).
  6. Inserisci il nuovo testo in Sostituisci con.
  7. Lascia selezionato Prova (solo anteprima, nessuna modifica) e fai clic su Anteprima.

La scheda Cerca e sostituisci nelle Azioni rapide di KPanel

La prova indica quante sostituzioni verrebbero effettuate e suddivide il conteggio per tabella e colonna, così puoi vedere esattamente dove verrebbe applicata la modifica prima di confermarla.

Quando l'anteprima ti sembra corretta:

  1. Deseleziona Prova.
  2. Fai clic su Esegui.
  3. Conferma nella finestra di dialogo.

Prima dell'inizio della sostituzione viene eseguito automaticamente un backup completo, e l'operazione copre tutte le tabelle, comprese quelle create dai plugin.

Cerca la stringa più specifica possibile. Sostituire old-domain.co.nz riscrive anche mail.old-domain.co.nz e staging.old-domain.co.nz, il che raramente è ciò che vuoi. Includere lo schema, come in https://old-domain.co.nz, mantiene la corrispondenza precisa.

Metodo 2: WP-CLI dalla console

La console ti offre lo stesso motore con un maggiore controllo sulle opzioni. È una delle sezioni che compaiono sui piani gestiti; sugli altri piani la barra delle schede mostra invece un link +8 sui piani gestiti.

Apri il sito, poi WordPress, poi Console. Il prompt inizia già con wp, quindi digita solo il resto del comando.

Prima l'anteprima:

search-replace 'http://old-domain.co.nz' 'https://old-domain.co.nz' --all-tables --dry-run

Poi l'esecuzione reale:

search-replace 'http://old-domain.co.nz' 'https://old-domain.co.nz' --all-tables

La console non esegue un backup al posto tuo. Il backup automatico prima dell'esecuzione avviene solo quando usi la scheda Cerca e sostituisci del Metodo 1. Se esegui il comando qui, esegui prima tu stesso un backup dalla pagina Backup del sito.

Opzioni utili:

OpzioneCosa fa
--all-tablesInclude le tabelle personalizzate create dai plugin, non solo quelle del core di WordPress
--dry-runIndica cosa cambierebbe e non scrive nulla
--preciseUsa PHP invece di SQL per la sostituzione. Più lento, ma gestisce le strutture serializzate complesse
--skip-columns=guidLascia invariati i GUID degli articoli (vedi sotto)
--report-changed-onlyLimita l'output alle tabelle effettivamente modificate

Una nota sui GUID

Ogni articolo di WordPress ha una colonna guid. Anche se sembra un URL, è un identificativo, non un link, e i lettori di feed lo usano per capire se hanno già visto un elemento. Riscriverlo può far ricomparire come nuovi tutti gli articoli del tuo feed.

Riscrivi i GUID quando cambi dominio in modo definitivo e riparti da zero. Saltali con --skip-columns=guid quando stai solo passando da HTTP a HTTPS sullo stesso dominio.

Cambiare dominio: usa invece la scheda URL del sito

Se lo scopo è spostare il sito su un nuovo dominio, non iniziare con la ricerca e sostituzione. La scheda Cambia URL del sito, nella stessa sezione Azioni rapide, aggiorna le opzioni siteurl e home ed esegue la sostituzione su tutte le tabelle in un'unica operazione, nell'ordine corretto. Farlo al contrario può lasciare WordPress incapace di caricare la propria area di amministrazione.

Dopo la sostituzione

Segui questo elenco prima di considerare concluso il lavoro.

  1. Svuota la cache. Nella sezione Azioni rapide, esegui Svuota cache. Se il sito usa la cache a pagina intera, svuotala da WordPress, poi Caching.
  2. Rigenera le regole di riscrittura. Esegui Rigenera rewrite nella stessa sezione, oppure apri Impostazioni, poi Permalink in wp-admin e fai clic su Salva le modifiche senza cambiare nulla.
  3. Svuota la CDN se il sito la usa, da Prestazioni, poi Kapsule CDN. Consulta Svuotare la cache di Kapsule CDN.
  4. Carica il sito in una finestra privata, così la cache del browser non può trarti in inganno.
  5. Controlla il lucchetto. Un lucchetto assente o con un avviso dopo il passaggio a SSL significa che sono rimasti degli URL vecchi: Risolvere gli avvisi di contenuto misto.
  6. Controlla una per una le pagine più delicate. Gli slider della home page, il logo nell'intestazione, ogni pagina creata con un page builder e il checkout di un negozio. Sono questi a contenere gli URL che si trovano nelle opzioni serializzate.
  7. Svuota la cache di eventuali plugin di caching dalla rispettiva schermata delle impostazioni.

Risoluzione dei problemi

La prova riporta zero sostituzioni. La stringa non è presente nel database in quella forma esatta. Controlla la barra finale, il prefisso www. o lo schema. Prova prima a cercare solo il nome host senza altro, per verificare che sia presente.

Le immagini non si vedono dopo un cambio di dominio. Gli URL dei media si trovano in wp_posts e wp_postmeta e vengono inclusi da --all-tables, ma una CDN o un plugin di ottimizzazione delle immagini potrebbe tenere in cache le proprie copie riscritte. Svuota la CDN e la cache del plugin, poi ricarica.

Alcune impostazioni sono sparite dopo la sostituzione. È il problema della serializzazione, e significa che la modifica è stata fatta con SQL diretto anziché con gli strumenti descritti qui. Ripristina il backup eseguito prima dell'operazione: Ripristinare da un backup.

Gli URL dello staging continuano a ricomparire. Qualcosa li sta reinserendo, di solito una pubblicazione pianificata o un'opzione in cache. Controlla il flusso di lavoro in Il flusso di lavoro di staging per WordPress e assicurati che Riscrivi URL sia selezionato quando pubblichi.

Ti è stato utile?

È un'IA? Legga questa pagina in Markdown

Articoli correlati

Installazione di WordPressWordPress è la piattaforma per siti web più utilizzata al mondo e KapsuleHost rende l'installazione automatica.…WordPress: Da dove iniziareCosa fa KapsuleHost per un sito WordPress, cosa continui a fare tu, e quale guida leggere per ogni compito.…Aggiornamenti automatici di WordPressGli aggiornamenti automatici mantengono il core di WordPress, i plugin e i temi aggiornati senza che tu debba controllare le note di rilascio, e lo fanno in…Gateway di Pagamento per un Negozio WooCommerceIl tab Pagamenti elenca i gateway di pagamento disponibili per il tuo negozio WooCommerce, mostra quali sono installati e quali attivi, e offre installazione e…

Hai ancora bisogno di aiuto?

Chiedi a Kora, che conosce il tuo account, o contatta il nostro team.

ContattaciContatta il supporto