Mass Find & Replace WordPress Databases - Łatwy sposób
Jest kilka okazji, w których musimy zmień adresy URL w naszej bazie danych WordPress. Na przykład musimy to zrobić po migracji bazy danych WordPress z jednej witryny, np. od http://acme.com
zdalny zakład produkcyjny, do http://acme.dev
strona rozwoju lokalnego na naszym komputerze.
WordPress.org obsługuje wiele wtyczek, takich jak WP DBManager i WP Migrate DB, a także wiele innych narzędzi, które pozwalają na importuj bazę danych z łatwością. Trudna część to konieczność zmień każdą instancję URL wewnątrz bazy danych.
Po migracji bazy danych adresy URL wewnątrz niej nadal wskazuje na starą stronę, w tym przypadku do acme.com
. Stary adres URL możesz znaleźć w polu wp_options
tabela, ustaw jako wartość Strona URL
i Dom
opcje i prawdopodobnie jest również osadzony w kilku innych wierszach i tabelach w bazie danych. Te stare adresy URL mogą w końcu uniemożliwić poprawne działanie witryny, więc musisz zmień je na nowy adres URL, w naszym przykładzie do acme.dev
.
W tym momencie, uzyskując dostęp do naszej strony rozwoju pod adresem acme.dev
po prostu poprowadzi do pustej strony.
Jak więc zmienić wszystkie te adresy URL w bazie danych?
Uruchamianie zapytania SQL
Zazwyczaj ludzie uruchamiają następujące zapytanie SQL, które zastępuje wartości Strona URL
i Dom
opcje w wp_options
stół.
UPDATE wp_options SET option_value = replace (value_value, 'http://acme.com', 'http://acme.dev') WHERE option_name = 'home' OR option_name = 'siteurl';
Następnie używają innego zapytania SQL do zastąpienia wszystkich wystąpień adresów URL w wp_posts
stół, a mianowicie w Treść postu
kolumna każdego wiersza.
UPDATE wp_posts SET post_content = replace (post_content, 'http://acme.com', 'http://acme.dev');
Uruchamianie tych zapytań jest praktycznym rozwiązaniem, ale jednocześnie nie jest wygodne. Może to być nawet nerwowe, widząc, jak baza danych może się zawrócić z powodu prostego przeoczenia w zapytaniu.
Wykorzystanie WP-CLI
Inną drogą, którą możemy zrobić, i którą uznałem za bardziej przydatną alternatywę, jest wykorzystanie linii poleceń WP-CLI. Oznacza to, że musisz mieć zainstalowany WP-CLI.
Zakładając, że zainstalowałeś WP-CLI i masz wp
polecenie dostępne jako alias, przejdź do katalogu, w którym znajdują się twoje pliki witryn WordPress.
Następnie uruchom następujące polecenie:
wp search-replace 'http://acme.com ”http://acme.dev
Pierwszy parametr, „http://acme.com”
, jest stary wpis, który należy zastąpić drugim, „http://acme.dev”
.
Linia poleceń przeszuka wszystkie tabele w bazie danych, nie tylko Treść postu
kolumna i wp_options
stół i wymień każdą instancję wpisu przekazany przez parametry polecenia.
Jak widać na powyższym obrazku, dokonano łącznie 225 wymian. I zrobiliśmy to za pomocą prostej linii poleceń.
Myślę, że warto wspomnieć, że możemy użyć wp szukaj-zastąp
polecenie, nie tylko w celu zastąpienia adresów URL, ale dowolnego fragmentu wartość przechowywane również w bazie danych. Możemy również ograniczyć operację do określonej tabeli, przekazując nazwę tabeli jako czwarty parametr, w następujący sposób:
wp search-replace '.jpg' .webp 'wp_posts
Uruchomienie powyższego polecenia spowoduje przeszukiwanie tylko wp_posts
, tabelę, w której przechowywane są nasze treści - posty, strony itp. - i zastąpienie rozszerzenia obrazu z .jpg
do .webp
.
WP-CLI sprawia, że splątane operacje SQL wyglądają bardziej intuicyjnie i można z nimi pracować w wygodniejszy sposób. Jeśli chcesz dostroić swoje polecenia, zajrzyj do dokumentacji WP-CLI, która zawiera listę opcji umożliwiających bardziej zaawansowane działanie za pomocą wp szukaj-zastąp
dowództwo.