Skip to content

Wszystko o WordPressie, tworzeniu stron — i nie tylko

🔍 Wyszukiwanie i zamiana w phpMyAdmin: jak zastąpić tekst i URL w bazie danych WordPress

🔍 Wyszukiwanie i zamiana w phpMyAdmin: jak zastąpić tekst i URL w bazie danych WordPress

💡 Szybki przegląd:

  • czym jest wyszukiwanie i zamiana w phpMyAdmin i kiedy jest potrzebna;
  • krok po kroku zapytanie SQL do zamiany tekstu w całej bazie WordPress;
  • jak masowo zamienić stare adresy URL na nowe przez phpMyAdmin;
  • przegląd dwóch wtyczek alternatywnych, Better Search Replace i Search & Replace.

Czym jest wyszukiwanie i zamiana w phpMyAdmin i do czego to potrzebne

Proszę sobie wyobrazić: zmienili Państwo domenę, przemianowali markę lub zaktualizowali strukturę bezpośrednich odnośników. Gdzieś w czeluściach bazy danych WordPress zostały setki starych wzmianek, w postach, metapolach, ustawieniach motywów. Otwierać każdy wpis i poprawiać ręcznie? Na stronie o pięciu podstronach, być może. Przy dwustu to już stracony dzień.

phpMyAdmin to interfejs webowy do zarządzania MySQL, który jest dostarczany razem z cPanel praktycznie każdego hostingu. Za jego pomocą wykonują Państwo zapytanie SQL, które w jednym przebiegu znajduje i zamienia wskazany ciąg we wszystkich rekordach bazy danych. Żadnych wtyczek, żadnego zbędnego kodu, tylko Państwo, przeglądarka i poprawne zapytanie.

Jednak ta metoda ma pewien niuans: błąd w składni może naruszyć niewłaściwe dane. Właśnie dlatego rozłożymy zapytania na czynniki pierwsze, a na końcu pokażemy parę wtyczek, które eliminują ryzyko ręcznej pracy i dają podgląd przed zamianą.

Jak znaleźć i zamienić tekst przez phpMyAdmin

Najczęstszy scenariusz: zamienić słowo lub frazę we wszystkich postach naraz. Na przykład starą nazwę firmy na nową, przestarzały termin lub uszkodzony email. Do tego potrzebne jest jedno zapytanie UPDATE w phpMyAdmin.

Krok 1: proszę zalogować się do phpMyAdmin przez cPanel

Proszę otworzyć cPanel swojego hostingu, znaleźć sekcję „Bazy danych" i kliknąć ikonę phpMyAdmin. Proszę się zalogować, zazwyczaj login i hasło są takie same jak do cPanel.

Krok 2: proszę wybrać bazę danych witryny

Po zalogowaniu po lewej stronie pojawi się lista baz danych. Proszę kliknąć tę, która dotyczy Państwa witryny WordPress. Jeśli nie pamiętają Państwo nazwy, proszę sprawdzić w pliku wp-config.php: wiersz define('DB_NAME', 'имя_базы').

Krok 3: proszę przejść na zakładkę SQL

W górnym pasku narzędzi proszę kliknąć przycisk SQL, otworzy się okno do wprowadzenia zapytania.

Okno zapytania SQL w interfejsie phpMyAdmin

Krok 4: proszę wprowadzić zapytanie SQL do zamiany tekstu

Podstawowa składnia wygląda tak:

1UPDATE table_name SET field_name =
2REPLACE(field_name, 'что_ищем', 'на_что_меняем');

Do zamiany tekstu we wszystkich postach WordPress zapytanie będzie miało następującą postać:

1UPDATE wp_posts SET post_content =
2REPLACE(post_content, 'старый текст', 'новый текст');

Rozbiór na części: UPDATE wp_posts, pracujemy z tabelą postów; SET post_content, zmieniamy zawartość pola post_content; REPLACE(post_content, 'A', 'B'), funkcja szuka podciągu A i zamienia go na B. Ważne: prefiks tabel może nie być wp_, proszę sprawdzić w wp-config.php wartość $table_prefix.

⚠️ Przed wykonaniem koniecznie proszę zrobić kopię zapasową bazy danych. W cPanel służy do tego sekcja Backup lub proszę użyć wtyczki takiej jak UpdraftPlus. Zapytanie SQL jest nieodwracalne, nie ma przycisku „cofnij".

Krok 5: proszę wykonać zapytanie

Proszę kliknąć przycisk „Go" (lub „Wykonaj") w prawym dolnym rogu. phpMyAdmin wykona zapytanie i pokaże komunikat z liczbą zmodyfikowanych wierszy, na przykład „Zmodyfikowano wierszy: 47". Oznacza to, że 47 rekordów zawierało szukany tekst i zostało zaktualizowanych.

Wynik wykonania zapytania SQL w phpMyAdmin

Gotowe. Proszę przejść się po witrynie i sprawdzić kilka stron, stary tekst powinien zostać zastąpiony.

Jak zastąpić URL w bazie danych WordPress przez phpMyAdmin

Zastępowanie adresów URL jest trudniejsze niż zamiana tekstu, ponieważ adresy nie są przechowywane w jednej tabeli, lecz rozrzucone po kilku. Oto gdzie szukać:

Lista tabel bazy danych WordPress w phpMyAdmin
  • Posty i strony: pole post_content w tabeli wp_posts
  • Metapola (pola niestandardowe): meta_value w wp_postmeta
  • Ustawienia motywów i wtyczek: option_value w wp_options
  • Komentarze: comment_content w wp_comments
  • Menu (stary menedżer odnośników): link_url i link_image w wp_links
  • Metadane użytkowników: meta_value w wp_usermeta

Aby objąć wszystko za jednym razem, proszę wykonać następujący zestaw zapytań (kopiować po jednym i klikać „Wykonaj" po każdym):

1UPDATE wp_options SET option_value =
2REPLACE(option_value, 'http://old-domain.com', 'https://new-domain.com')
3WHERE option_name = 'home' OR option_name = 'siteurl';
4
5UPDATE wp_posts SET post_content =
6REPLACE(post_content, 'http://old-domain.com', 'https://new-domain.com');
7
8UPDATE wp_postmeta SET meta_value =
9REPLACE(meta_value, 'http://old-domain.com', 'https://new-domain.com');
10
11UPDATE wp_comments SET comment_content =
12REPLACE(comment_content, 'http://old-domain.com', 'https://new-domain.com');
13
14UPDATE wp_links SET link_url =
15REPLACE(link_url, 'http://old-domain.com', 'https://new-domain.com');
16
17UPDATE wp_usermeta SET meta_value =
18REPLACE(meta_value, 'http://old-domain.com', 'https://new-domain.com');

⚠️ Jeszcze raz: przed uruchomieniem, pełna kopia zapasowa. Jeśli witryna używa danych zserializowanych (a robi to większość motywów i wtyczek), prosta zamiana tekstowa może uszkodzić strukturę. W takim przypadku lepiej skorzystać z wtyczek z następnej sekcji, potrafią one poprawnie obsługiwać serializację.

Wtyczki do wyszukiwania i zamiany w WordPress

Ręczna metoda przez phpMyAdmin jest szybka, ale niebezpieczna dla początkujących. Wtyczki rozwiązują dwa główne problemy: dają podgląd przed zamianą (dry run) i poprawnie działają z danymi zserializowanymi. Przyjrzyjmy się dwóm sprawdzonym opcjom.

Better Search Replace

Interfejs wtyczki Better Search Replace w panelu administracyjnym WordPress

Better Search Replace to najpopularniejsza bezpłatna wtyczka do tego zadania: ponad milion aktywnych instalacji. Została opracowana na bazie otwartego skryptu interconnect/it Search Replace DB i wykorzystuje natywne funkcje WordPressa, a nie surowe zapytania SQL.

Jak pracować z wtyczką:

  • Proszę ją zainstalować i aktywować z sekcji „Wtyczki → Dodaj nową".
  • Przejść do „Narzędzia → Better Search Replace".
  • W polu „Search for" wpisać szukany tekst lub URL.
  • W polu „Replace with", to, na co zamieniamy.
  • W bloku „Select tables" wybrać potrzebne tabele (lub wszystkie).
  • Włączyć „Run as dry run", to przebieg testowy bez rzeczywistej zamiany. Wtyczka pokaże, ile dopasowań znaleziono i w których tabelach.
Ustawienia wtyczki Better Search Replace z opcją uruchomienia próbnego

Po sprawdzeniu proszę wyłączyć „Dry run" i uruchomić zamianę ponownie, tym razem już z rzeczywistym zapisem zmian.

Zaleta: poprawnie obsługuje dane zserializowane, URL nie „rozjedzie się" po zamianie. Wada: nie wykonuje automatycznej kopii zapasowej przed zamianą (proszę zrobić ją samodzielnie, na przykład tym samym UpdraftPlus).

Cena: bezpłatnie.

🔗 Better Search Replace na WordPress.org

Search & Replace

Interfejs wtyczki Search and Replace w kokpicie WordPress

Search & Replace od zespołu WP Media, alternatywa z wbudowaną kopią zapasową. Przed zamianą wtyczka potrafi utworzyć zrzut bazy danych i go zapisać. Jeśli coś pójdzie nie tak, przywraca Pan/Pani z kopii zapasowej dwoma kliknięciami.

Dodatkowe możliwości:

  • zamiana domeny/URL jednym kliknięciem (osobna zakładka „Replace Domain / URL");
  • obsługa CSV do zamiany wsadowej (format: „czego szukamy; na co zmieniamy");
  • zmiana prefiksu tabel;
  • obsługa multisite.

Wtyczka ma ponad 100 000 aktywnych instalacji i ocenę 4.3. Oficjalnie nie była testowana z najnowszymi wersjami WordPressa, ale opinie użytkowników potwierdzają stabilne działanie na WP 6.8 z PHP 8.2.

Minus: interfejs jest mniej intuicyjny niż w Better Search Replace, próg wejścia jest nieco wyższy.

Cena: bezpłatnie.

🔗 Search & Replace na WordPress.org

Co wybrać: wtyczkę czy phpMyAdmin?

Krótka wskazówka: zmienia Pan/Pani 1-2 słowa w tekście postów i zna składnię SQL, phpMyAdmin jest szybszy. Zmienia Pan/Pani domenę, pracuje z danymi serializowanymi lub nie chce dotykać bazy ręcznie, proszę zainstalować Better Search Replace i zrobić dry run. Potrzebny jest wbudowany backup i zamiana wsadowa, Search & Replace.

⁉️🤔 Często zadawane pytania

Czy można cofnąć zamianę po wykonaniu zapytania SQL?

Nie, zapytanie SQL w phpMyAdmin jest nieodwracalne. Właśnie dlatego przed każdą zamianą obowiązkowa jest pełna kopia zapasowa bazy danych. Proszę ją wykonać przez cPanel (sekcja Backup → Download MySQL Database) lub wtyczką UpdraftPlus. Z kopią zapasową zawsze można przywrócić bazę do stanu „sprzed".

Czym są dane zserializowane i dlaczego prosta zamiana URL je psuje?

Serializacja to sposób pakowania złożonych struktur (tablic, obiektów) w ciąg znaków do przechowywania w bazie. WordPress używa jej do ustawień motywów, danych wtyczek i widżetów. Ciąg s:26:"http://old-domain.com" oznacza „ciąg o długości 26 znaków". Jeśli zamieni Pan/Pani domenę na krótszą lub dłuższą, długość w s:26 przestanie odpowiadać rzeczywistości i WordPress nie będzie mógł odczytać danych. Wtyczki (Better Search Replace, Search & Replace) przeliczają długość automatycznie. Bezpośrednia zamiana SQL, nie.

Czy koniecznie trzeba używać phpMyAdmin, czy można przez WP-CLI?

WP-CLI to doskonała alternatywa, jeśli ma Pan/Pani dostęp przez SSH. Polecenie wp search-replace 'старый-домен' 'новый-домен' robi to samo, ale z automatyczną obsługą serializacji. Jest to nawet bezpieczniejsze niż phpMyAdmin, WP-CLI działa przez API WordPressa, a nie bezpośrednio z MySQL. Jednak nie wszystkie hostingi dają dostęp SSH w tanich planach, phpMyAdmin jest dostępny praktycznie zawsze.

Czy można zamienić tylko w określonych wpisach, a nie w całej bazie?

Tak, proszę dodać do zapytania SQL warunek WHERE. Na przykład, aby zamienić tekst tylko we wpisach z określonej kategorii: najpierw proszę znaleźć ID kategorii, a następnie:

1UPDATE wp_posts SET post_content =
2REPLACE(post_content, 'старое', 'новое')
3WHERE ID IN (
4 SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id = 12
5);

Ale znacznie prościej jest wykonać pełną zamianę z dry run w Better Search Replace, wtyczka pokaże tabelę i liczbę dopasowań, a Pan/Pani ręcznie odznaczy niepotrzebne tabele.

Co robić, jeśli strona przestała się otwierać po zamianie URL?

Po pierwsze, nie panikować. Po drugie, przywrócić bazę z kopii zapasowej (wykonał Pan/wykonała Pani kopię zapasową?). Po trzecie, prawdopodobna przyczyna: uszkodzone dane zserializowane. Proszę użyć wtyczki Better Search Replace, jest ona specjalnie zaprojektowana do zamiany domen i poprawnie obsługuje serializację. Po przywróceniu bazy proszę uruchomić zamianę za jej pomocą.

Którą metodę wyszukiwania i zamiany wybrać: podsumowanie

Wybór zależy od trzech czynników: co Pan/Pani zmienia, jak duża jest strona i jaki jest Pana/Pani poziom komfortu z SQL.

  • Tekst w kilku wpisach → phpMyAdmin z UPDATE wp_posts. Szybko, ale bez podglądu.
  • Pełna zmiana domeny lub przejście na HTTPS → Better Search Replace. Dry run pokaże wszystkie objęte wiersze przed rzeczywistą zamianą, a wbudowana obsługa serializacji uchroni przed uszkodzonymi danymi. To złoty standard dla migracji.
  • Potrzebny wbudowany backup → Search & Replace. Tworzy zrzut bazy przed zamianą i potrafi go przywrócić.

Główna zasada pozostaje niezmienna: kopia zapasowa, kopia zapasowa i jeszcze raz kopia zapasowa, przed każdym dotknięciem bazy danych. Jedno polecenie UPDATE bez kopii zapasowej może położyć stronę, a z kopią jest to po prostu narzędzie pracy, które oszczędza godziny rutyny.

1