Cum să schimbi toate GUID-urile din tabela posts?

8 dec. 2015, 14:35:15
Vizualizări: 41.5K
Voturi: 10

Recent mi-am transferat WordPress-ul de pe serverul de dezvoltare pe serverul live. Am observat că trebuie să schimb toate "guid"-urile cu URL-ul domeniului live. Există vreo interogare MySQL sau o funcție simplă disponibilă pentru a le schimba ușor.

7
Comentarii

Consultă această pagină, în partea de jos a acestui bloc de modificare a URL-ului vei găsi numele unor plugin-uri. :)

Mayeenul Islam Mayeenul Islam
8 dec. 2015 14:53:01

Mulțumesc. Dar vreau să schimb doar guid-ul. Am făcut alte lucruri manual. Am crezut că există o interogare mysql disponibilă pentru a-l schimba

Kvvaradha Kvvaradha
8 dec. 2015 15:11:05

Aș dori ca WordPress să nu încorporeze URL-uri în GUID. Ele nu sunt URL-uri. Nu ar trebui să fie nevoie să le schimbați (sau pe majoritatea). Vezi: http://wordpress.stackexchange.com/a/90209/21376

s_ha_dum s_ha_dum
8 dec. 2015 16:08:10

@s_ha_dum. Deci nu este nevoie să o schimb, corect?

Kvvaradha Kvvaradha
8 dec. 2015 16:18:33

Cel mai probabil nu @Kvvaradha Le poți schimba dacă sună de parcă nu ai implementat încă site-ul și dacă da, nu va cauza nicio problemă, dar mă îndoiesc că trebuie să le schimbi cu adevărat.

s_ha_dum s_ha_dum
8 dec. 2015 16:21:26

A fost rezolvată această întrebare?

Ethan Rævan Ethan Rævan
13 sept. 2016 06:03:03

@O'Sullivan Nu am făcut nicio modificare în guid. Și site-ul funcționează perfect. Așadar, problema s-a rezolvat fără a face modificări la interogări.

Kvvaradha Kvvaradha
13 sept. 2016 19:29:02
Arată celelalte 2 comentarii
Toate răspunsurile la întrebare 6
0
26

Ar trebui să arate cam așa:

UPDATE wp_posts SET guid = REPLACE(guid, 'oldurl.com', 'newurl.com') WHERE guid LIKE 'http://oldurl.com/%';
  • oldurl.com - URL-ul vechi afișat în setările WordPress > opțiuni generale
  • newurl.com - Noul URL
3 sept. 2016 16:18:51
3

Pentru a îmbunătăți răspunsurile anterioare, ar trebui să actualizezi toate tabelele relevante, cum ar fi (prefixul tabelului aici este 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%';

Dacă ai orice plugin-uri care fac redirecționări, ar trebui să modifici și permalink-urile acolo:

UPDATE `wp_redirection_404` SET url = REPLACE(url, 'oldsiteurl', 'newsiteurl') WHERE url LIKE 'oldsiteurl%';
9 mar. 2020 15:04:39
Comentarii

Sună bine, omule. Acest răspuns va ajuta unele persoane noi

Kvvaradha Kvvaradha
11 mar. 2020 06:15:32

fii extrem de atent când înlocuiești în tabelele wp_postmeta și wp_options.. de multe ori există date serializate stocate în aceste tabele, dacă "oldsiteurl" și "newsiteurl" au lungimi diferite, vei corupe aceste câmpuri.

farinspace farinspace
11 iun. 2020 18:50:50

Da @farinspace perfect de acord, niciodată să nu faci o actualizare automată pe wp_postmeta și wp_options, va trebui să actualizezi aceste tabele manual și, dacă este cazul, să editezi șirurile serializate cu un editor adecvat https://serializededitor.com/

Jackie Degl'Innocenti Jackie Degl'Innocenti
20 sept. 2020 21:15:59
2

Folosește WP-CLI pentru a căuta și înlocui. Plugin-ul MigrateDB are de asemenea o funcționalitate de căutare și înlocuire la export pentru următoarea tranziție.

8 dec. 2015 21:58:01
Comentarii

Lasă-mă să verific

Kvvaradha Kvvaradha
9 dec. 2015 02:59:47

Ai avut noroc?

jgraup jgraup
11 dec. 2015 00:05:57
0

Am uitat că am scris acum câțiva ani un generator SQL pentru exact această sarcină:

https://farinspace.github.io/wp-migrate-gen/

În esență, SQL-ul relevant este următorul:

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

Interogările de mai sus vor verifica și vor sări peste datele serializate PHP.

Folosind generatorul, puteți dezactiva opțiunea "sări peste date serializate" dacă lungimile vechiului și noului șir de caractere se potrivesc.

ATENȚIE: Vă recomand să creați întotdeauna o copie de rezervă a datelor dvs. înainte de a rula orice interogări care adaugă/șterg/actualizează conținut.

24 sept. 2020 21:49:15
2

Documentația WordPress avertizează despre modificarea intrărilor guid în baza de date WP: "Este esențial să NU modificați conținutul acestui câmp."

https://wordpress.org/support/article/changing-the-site-url/#important-guid-note

25 iun. 2020 15:30:49
Comentarii

Dar când domeniul anterior era localhost, litera U din GUID nu prea se potrivește. :)

fuxia fuxia
25 iun. 2020 22:40:58

După cum este menționat în documentația WordPress, atunci când GUID-ul este folosit, de exemplu, de cititoarele de fluxuri pentru a identifica conținutul unic, tot nu contează ce domeniu este în GUID. Nu ar trebui să îl schimbați decât dacă doriți ca cititoarele de fluxuri să evalueze toate GUID-urile modificate ca fiind 'noi'. Dar când treceți de la 'localhost' la un alt domeniu, probabil că cititoarele de fluxuri nu sunt principala voastră preocupare... ;-)

user2186232 user2186232
27 iun. 2020 15:29:30
1

După cum ai menționat, există câteva variabile care trebuie schimbate pentru a actualiza la noul URL pe site-ul tău WordPress.

  1. Accesează și descarcă Scriptul de Căutare și Înlocuire în Baza de Date de la Interconnect IT aici
  2. Dezarhivează fișierul și plasează folderul pe serverul live unde este instalat WordPress (în rădăcină) și redenumește folderul în replace (captură de ecran)
  3. Navighează în browser la noul folder creat (ex: http://web.site/replace) și vei vedea instrumentul de căutare/înlocuire
  4. Până în acest punct ar trebui să fie destul de intuitiv: introdu vechiul URL în câmpul search for… și noul URL în câmpul replace with…

Poți apăsa butonul dry run (testare fără modificări) sub secțiunea actions pentru a vedea ce va fi înlocuit înainte de a executa scriptul. După ce ai terminat, asigură-te că ștergi folderul /replace/.

3 sept. 2016 16:37:09
Comentarii

Migrez în mod obișnuit site-uri WordPress și acesta este procesul pe care îl folosesc.

Dacă cineva este interesat, fac două înlocuiri prin căutare. Prima rulare este pentru a înlocui toate domeniile vechi cu cele noi. A doua este pentru a impune SSL.

  1. Înlocuiește olddomain.com cu newdomain.com
  2. Activează regex, înlocuiește https?:\/\/([\w-]*\.|)newdomain\.com cu https://$1newdomain.com. Această expresie regulată va suporta subdomenii.

Ca întotdeauna, rulează mai întâi un test și verifică câteva dintre rezultate.

Curtis Curtis
21 dec. 2017 04:13:49