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.

The change

Read this before you run anything

WordPress stores many options as PHP-serialized strings, and a serialized string records its own byte length — s:19:"http://old-site.com". A plain SQL replace changes the text but not the length, so PHP can no longer unserialize the row. It does not error. The value just silently becomes empty.

What you lose: widget configuration, theme mods, and most plugin settings. Usually you do not notice until days later, and by then the backup you would have restored is gone too.

This is why the queries below deliberately do not touch wp_options.

What are you moving?
search-replace.sql

Take a database backup first. Not 'consider taking one' — take one. There is no undo for an 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.

FAQ

Î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.