Sari la conținut
Instrumente

SQL de căutare și înlocuire

Schimbă adresa URL a site-ului fără să corupi datele serializate

Rulează în browserul tău. Nu se încarcă nimic.

Modificarea

Citește asta înainte să rulezi ceva

WordPress stochează multe opțiuni ca șiruri PHP-serialized, iar un șir serializat își înregistrează propria lungime în octeți — s:19:"http://old-site.com". O simplă înlocuire SQL modifică textul, dar nu și lungimea, așa că PHP nu mai poate deserializa rândul. Nu generează o eroare. Valoarea devine pur și simplu goală, în tăcere.

Ce pierzi: configurarea widgeturilor, modificările temei și majoritatea setărilor pluginurilor. De obicei nu observi decât peste câteva zile, iar până atunci a dispărut și backupul din care ai fi făcut restaurarea.

Acesta este motivul pentru care interogările de mai jos evită în mod deliberat wp_options.

Ce muți?
search-replace.sql

Fă mai întâi o copie de rezervă a bazei de date. Nu „ia în calcul să faci una” — fă una. Nu există anulare pentru un UPDATE.

Despre SQL de căutare și înlocuire

O căutare și înlocuire SQL naivă într-o bază de date WordPress strică fiecare opțiune serializată pe care o atinge, pentru că lungimea șirului stocat nu mai corespunde. Instrumentul generează interogările care sunt sigure și explică exact care nu sunt.

Întrebări frecvente

Întrebări

Pot schimba URL-ul site-ului meu WordPress cu un find and replace SQL?

Nu în siguranță, iar acesta este cel mai răspândit sfat prost din WordPress. Multe opțiuni sunt stocate ca șiruri serializate PHP care își înregistrează propria lungime în octeți. Un replace SQL simplu schimbă textul, dar nu și lungimea, așa că PHP eșuează pe nesimțite să deserializeze rândul, iar valoarea pur și simplu dispare — luând cu ea setările de widget, modificările de temă și configurația de plugin.

Ce ar trebui să folosesc în schimb?

WP-CLI: mai întâi 'wp search-replace old new --all-tables --dry-run', apoi fără --dry-run. Înțelege serializarea și rescrie corect prefixele de lungime. Dacă nu ai acces la CLI, pluginul Better Search Replace face același lucru din panoul de administrare.

Ar trebui să actualizez coloana GUID?

Nu. GUID-ul este un identificator unic permanent al unui articol, nu un link, iar cititoarele de feed se bazează pe el. Rescrierea lui face ca fiecare abonat să vadă fiecare articol vechi ca fiind complet nou. Documentația WordPress spune explicit să nu îl schimbi.