Come modificare tutti i GUID nella tabella dei post?
Per migliorare le risposte precedenti dovresti aggiornare tutte le tabelle rilevanti come (qui il prefisso delle tabelle è wp_):
UPDATE `wp_posts` SET guid = REPLACE(guid, 'oldsiteurl', 'newsiteurl') WHERE guid LIKE 'oldsiteurl%';
UPDATE `wp_postmeta` SET meta_value = REPLACE(meta_value, 'oldsiteurl', 'newsiteurl') WHERE meta_value LIKE 'oldsiteurl%';
UPDATE `wp_options` SET option_value = REPLACE(option_value, 'oldsiteurl', 'newsiteurl') WHERE option_value LIKE 'oldsiteurl%';
Se hai plugin che gestiscono reindirizzamenti dovresti anche modificare i permalink lì:
UPDATE `wp_redirection_404` SET url = REPLACE(url, 'oldsiteurl', 'newsiteurl') WHERE url LIKE 'oldsiteurl%';

fai molta attenzione quando sostituisci nelle tabelle wp_postmeta
e wp_options
.. spesso in queste tabelle sono memorizzati dati serializzati, se "oldsiteurl" e "newsiteurl" hanno lunghezze di stringa diverse, corromperai questi campi.

Sì @farinspace hai perfettamente ragione, non fare mai un aggiornamento automatico su wp_postmeta e wp_options, dovrai aggiornare quelle tabelle manualmente e nel caso modificare le stringhe serializzate con un editor appropriato https://serializededitor.com/

Usa WP-CLI per cercare e sostituire. Il plugin MigrateDB include anche una funzionalità di ricerca e sostituzione all'esportazione per la prossima volta che effettui una migrazione.

Avevo dimenticato di aver scritto un generatore SQL qualche anno fa proprio per questo compito:
https://farinspace.github.io/wp-migrate-gen/
In sostanza, il SQL rilevante è il seguente:
UPDATE `wp_options` SET `option_value` = REPLACE(`option_value`, 'a', 'b') WHERE `option_value` NOT REGEXP '^([adObis]:|N;)';
UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, 'a', 'b');
UPDATE `wp_posts` SET `post_excerpt` = REPLACE(`post_excerpt`, 'a', 'b');
UPDATE `wp_posts` SET `guid` = REPLACE(`guid`, 'a', 'b');
UPDATE `wp_comments` SET `comment_author_url` = REPLACE(`comment_author_url`, 'a', 'b');
UPDATE `wp_comments` SET `comment_content` = REPLACE(`comment_content`, 'a', 'b');
UPDATE `wp_links` SET `link_url` = REPLACE(`link_url`, 'a', 'b');
UPDATE `wp_postmeta` SET `meta_value` = REPLACE(`meta_value`, 'a', 'b') WHERE `meta_value` NOT REGEXP '^([adObis]:|N;)';
UPDATE `wp_usermeta` SET `meta_value` = REPLACE(`meta_value`, 'a', 'b') WHERE `meta_value` NOT REGEXP '^([adObis]:|N;)';
UPDATE `wp_termmeta` SET `meta_value` = REPLACE(`meta_value`, 'a', 'b') WHERE `meta_value` NOT REGEXP '^([adObis]:|N;)';
UPDATE `wp_commentmeta` SET `meta_value` = REPLACE(`meta_value`, 'a', 'b') WHERE `meta_value` NOT REGEXP '^([adObis]:|N;)';
Le query sopra controlleranno e salteranno i dati serializzati PHP.
Usando il generatore, puoi disattivare "salta dati serializzati" se le lunghezze delle stringhe vecchie e nuove corrispondono.
ATTENZIONE: Raccomando vivamente di creare sempre un backup dei tuoi dati prima di eseguire qualsiasi query che aggiunga/rimuova/aggiorni contenuti.

La documentazione di WordPress mette in guardia riguardo alla modifica delle voci guid nel database di WP: "È fondamentale che NON modifichi il contenuto di questo campo."
https://wordpress.org/support/article/changing-the-site-url/#important-guid-note

Ma quando il dominio precedente era localhost
, la U in GUID non è proprio adatta. :)

Come menzionato nella documentazione di WordPress, quando il GUID viene utilizzato ad esempio dai feedreader per identificare contenuti unici, non importa quale dominio sia nel GUID. Non dovresti cambiarlo a meno che tu non voglia che i feedreader valutino tutti i GUID modificati come 'nuovi'. Ma quando passi da 'localhost' a un altro dominio, i feedreader probabilmente non sono la tua preoccupazione principale... ;-)

Come hai menzionato, ci sono alcune variabili che devono essere modificate per poter aggiornare al nuovo URL sul tuo sito WordPress.
- Vai e scarica lo script di ricerca e sostituzione del database di Interconnect IT da qui
- Decomprimi il file e posiziona la cartella nel tuo server live dove è installato WordPress (la root) e rinomina la cartella in
replace
(screenshot) - Naviga alla nuova cartella che hai creato nel tuo browser (es:
http://web.site/replace
) e vedrai lo strumento di ricerca/sostituzione - Dovrebbe essere abbastanza intuitivo a questo punto: inserisci il tuo vecchio URL nel campo
search for…
e il nuovo URL nel camporeplace with…
Puoi cliccare il pulsante dry run sotto actions per vedere cosa verrà sostituito prima di eseguire lo script. Una volta terminato, assicurati di rimuovere la cartella /replace/
.

Eseguo regolarmente la migrazione di siti WordPress e questo è ciò che utilizzo.
Se a qualcuno interessa, eseguo due operazioni di ricerca e sostituzione. La prima è per sostituire tutti i vecchi domini con il nuovo. La seconda è per imporre l'SSL.
- Sostituisci
olddomain.com
connewdomain.com
- Attiva le regex, sostituisci
https?:\/\/([\w-]*\.|)newdomain\.com
conhttps://$1newdomain.com
. Questa regex supporterà anche i sottodomini.
Come sempre, esegui prima una prova e controlla alcuni dei risultati.
