Come modificare tutti i GUID nella tabella dei post?

8 dic 2015, 14:35:15
Visualizzazioni: 41.5K
Voti: 10

Recentemente ho trasferito il mio WordPress dal server di sviluppo al server di produzione. Ho notato che devo cambiare tutti i "guid" con l'URL del dominio live. C'è qualche query MySQL o una semplice funzione disponibile per modificarlo facilmente?

7
Commenti

Consulta questa pagina, in fondo a questo blocco di modifica dell'URL troverai i nomi di alcuni plugin. :)

Mayeenul Islam Mayeenul Islam
8 dic 2015 14:53:01

Grazie. Ma voglio cambiare solo il guid. Ho già fatto altre cose manualmente. Pensavo fosse disponibile qualche query mysql per modificarlo

Kvvaradha Kvvaradha
8 dic 2015 15:11:05

Spero che WordPress non incorpori gli URL nel GUID. Non sono URL. Non dovresti aver bisogno di modificarli (o la maggior parte di essi). Vedi: http://wordpress.stackexchange.com/a/90209/21376

s_ha_dum s_ha_dum
8 dic 2015 16:08:10

@s_ha_dum. Quindi non c'è bisogno di cambiarlo, giusto?

Kvvaradha Kvvaradha
8 dic 2015 16:18:33

Molto probabilmente no @Kvvaradha Puoi cambiarli visto che sembra che tu non abbia ancora pubblicato il sito e, in tal caso, non causerà problemi, ma dubito che tu abbia effettivamente bisogno di modificarli.

s_ha_dum s_ha_dum
8 dic 2015 16:21:26

Questa domanda è stata risolta?

Ethan Rævan Ethan Rævan
13 set 2016 06:03:03

@O'Sullivan Non ho apportato alcuna modifica al guid. E il sito funziona bene. Quindi il problema è stato risolto senza modificare le query.

Kvvaradha Kvvaradha
13 set 2016 19:29:02
Mostra i restanti 2 commenti
Tutte le risposte alla domanda 6
0
26

Dovrebbe essere qualcosa del genere:

UPDATE wp_posts SET guid = REPLACE(guid, 'oldurl.com', 'newurl.com') WHERE guid LIKE 'http://oldurl.com/%';
  • oldurl.com - URL precedente mostrato nelle impostazioni di WordPress > opzioni generali
  • newurl.com - Nuovo URL
3 set 2016 16:18:51
3

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%';
9 mar 2020 15:04:39
Commenti

Sembra buono amico, questa risposta aiuterà alcune persone nuove

Kvvaradha Kvvaradha
11 mar 2020 06:15:32

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.

farinspace farinspace
11 giu 2020 18:50:50

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/

Jackie Degl'Innocenti Jackie Degl'Innocenti
20 set 2020 21:15:59
2

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.

8 dic 2015 21:58:01
Commenti

Fammi controllare

Kvvaradha Kvvaradha
9 dic 2015 02:59:47

Hai avuto fortuna?

jgraup jgraup
11 dic 2015 00:05:57
0

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.

24 set 2020 21:49:15
2

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

25 giu 2020 15:30:49
Commenti

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

fuxia fuxia
25 giu 2020 22:40:58

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... ;-)

user2186232 user2186232
27 giu 2020 15:29:30
1

Come hai menzionato, ci sono alcune variabili che devono essere modificate per poter aggiornare al nuovo URL sul tuo sito WordPress.

  1. Vai e scarica lo script di ricerca e sostituzione del database di Interconnect IT da qui
  2. Decomprimi il file e posiziona la cartella nel tuo server live dove è installato WordPress (la root) e rinomina la cartella in replace (screenshot)
  3. Naviga alla nuova cartella che hai creato nel tuo browser (es: http://web.site/replace) e vedrai lo strumento di ricerca/sostituzione
  4. Dovrebbe essere abbastanza intuitivo a questo punto: inserisci il tuo vecchio URL nel campo search for… e il nuovo URL nel campo replace 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/.

3 set 2016 16:37:09
Commenti

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.

  1. Sostituisci olddomain.com con newdomain.com
  2. Attiva le regex, sostituisci https?:\/\/([\w-]*\.|)newdomain\.com con https://$1newdomain.com. Questa regex supporterà anche i sottodomini.

Come sempre, esegui prima una prova e controlla alcuni dei risultati.

Curtis Curtis
21 dic 2017 04:13:49