Główna » WordPress » Mass Find & Replace WordPress Databases - Łatwy sposób

    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.

    IMAGE: Sequel Pro, wyszukiwanie wartości bazy danych

    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ąpdowództwo.