Po migracji WordPressa sama zmiana adresu w ustawieniach nie wystarczy. Trzeba także podmienić stary URL w bazie danych, najlepiej za pomocą wtyczki Better Search Replace. Przed każdą operacją wykonaj kopię zapasową bazy.
Dlaczego zmiana adresu w kokpicie to za mało?
W panelu WordPressa przejdź do Ustawienia → Ogólne i zmień wartości w polach „Adres WordPressa (URL)” oraz „Adres witryny (URL)”. To aktualizuje podstawowy adres instalacji, ale nie poprawia automatycznie wszystkich odnośników zapisanych wcześniej.
Stary adres może nadal znajdować się w treści wpisów, shortcode’ach, adresach obrazów oraz meta-danych przechowywanych między innymi w tabelach wp_posts i wp_postmeta. W efekcie pojawiają się niedziałające obrazy, błędy 404 albo przekierowania do poprzedniej domeny.
Przygotuj kopię i wybierz metodę zmiany
Kopia zapasowa bazy danych jest obowiązkowa. Operacje wyszukiwania i zamiany mogą zmienić wiele rekordów jednocześnie, a bez backupu ich odtworzenie może być trudne lub niemożliwe. Zapisz kopię przez panel hostingu, narzędzie eksportu bazy albo phpMyAdmin.
W większości przypadków wybierz wtyczkę. Bezpośrednie zapytania SQL pozostaw osobom, które znają strukturę bazy WordPressa i potrafią przywrócić ją z kopii:
| Metoda | Wymagana wiedza | Bezpieczeństwo danych serializowanych | Dla kogo? |
|---|---|---|---|
| Better Search Replace | Mała | Wysokie, wtyczka obsługuje serializację | Dla większości użytkowników |
| SQL w phpMyAdmin | Duża | Niższe, ręczna zamiana może uszkodzić dane | Dla zaawansowanych użytkowników |
Jak zmienić adres URL za pomocą Better Search Replace?
Ta metoda jest najbezpieczniejsza, gdy domena zmieniła się razem z hostingiem albo gdy chcesz podmienić adres także w zapisanych ustawieniach wtyczek.
- Zainstaluj i aktywuj wtyczkę Better Search Replace z poziomu Wtyczki → Dodaj nową.
- Otwórz Narzędzia → Better Search Replace.
- W polu „Search for” wpisz pełny stary adres, na przykład
https://stara-domena.pl, a w polu „Replace with” nowy adres, na przykładhttps://nowa-domena.pl. - Zaznacz wszystkie tabele, jeśli chcesz zaktualizować odwołania w całej instalacji WordPressa.
- Uruchom opcję „Dry Run”. Tryb testowy wyszukuje rekordy, ale nie zapisuje zmian. Sprawdź, czy liczba znalezionych elementów wygląda wiarygodnie.
- Jeśli wynik jest prawidłowy, wyłącz „Dry Run” i uruchom wyszukiwanie oraz zamianę ponownie.
W bazie WordPressa mogą znajdować się dane serializowane, czyli zapisane razem z informacją o długości tekstu. Zwykła zamiana tekstu w SQL może rozbieżność tej długości uszkodzić i spowodować błędy w ustawieniach motywu lub wtyczek. Better Search Replace aktualizuje takie dane w sposób dostosowany do ich struktury.
Jak zmienić adres URL w phpMyAdmin?
Bezpośrednia edycja bazy przydaje się, gdy nie masz dostępu do kokpitu WordPressa. Najpierw sprawdź w pliku wp-config.php, z której bazy korzysta instalacja. Zwróć uwagę na wartość DB_NAME, a następnie otwórz tę bazę w phpMyAdmin.
Przed wykonaniem zapytań sprawdź także prefiks tabel. Nie każda instalacja używa domyślnego wp_. W bazie może on wyglądać na przykład tak: wp123_. W poniższych zapytaniach zastąp wp_ rzeczywistym prefiksem.
- Otwórz phpMyAdmin i wybierz bazę wskazaną w pliku
wp-config.php. - Przejdź do zakładki SQL i wykonaj zapytanie aktualizujące adresy
homeorazsiteurl. - Zaktualizuj adresy w treści wpisów oraz identyfikatorach, używając właściwego prefiksu tabel.
- Sprawdź działanie strony i panelu administracyjnego, a następnie wyczyść pamięć podręczną.
Przykładowe zapytania wyglądają następująco:
UPDATE wp_options
SET option_value = REPLACE(option_value, 'https://stara-domena.pl', 'https://nowa-domena.pl')
WHERE option_name IN ('home', 'siteurl');
UPDATE wp_posts
SET post_content = REPLACE(post_content, 'https://stara-domena.pl', 'https://nowa-domena.pl');
UPDATE wp_posts
SET guid = REPLACE(guid, 'https://stara-domena.pl', 'https://nowa-domena.pl');
UPDATE wp_postmeta
SET meta_value = REPLACE(meta_value, 'https://stara-domena.pl', 'https://nowa-domena.pl');
To rozwiązanie nie jest tak bezpieczne jak Better Search Replace, ponieważ proste zapytania REPLACE() nie rozumieją struktury danych serializowanych. Nie wykonuj ich bez aktualnej kopii bazy i pewności, że wskazujesz właściwe tabele.
Co sprawdzić, gdy strona po zmianie nie działa?
Po aktualizacji otwórz stronę w trybie prywatnym i sprawdź kilka podstron, obrazy, formularze oraz logowanie do /wp-admin. Jeśli pojawiają się błędy, przejdź przez poniższą listę:
- Wyczyść cache wtyczki oraz pamięć podręczną przeglądarki.
- Wejdź w Ustawienia → Bezpośrednie odnośniki i zapisz ustawienia ponownie, aby WordPress odtworzył reguły w pliku
.htaccess. - Sprawdź, czy plik
.htaccessznajduje się w katalogu głównym instalacji i zawiera reguły właściwe dla WordPressa. - Jeśli zmienił się hosting, zweryfikuj w
wp-config.phpwartościDB_NAME,DB_USER,DB_PASSWORDiDB_HOST. - Jeśli domena została skierowana na nowy serwer, sprawdź rekordy DNS. Ich propagacja może potrwać do 24 godzin.
Najbezpieczniejszy schemat jest prosty: wykonaj backup, zmień podstawowy adres w ustawieniach WordPressa, uruchom Better Search Replace z trybem „Dry Run”, a następnie sprawdź całą stronę. Gdy po tych czynnościach nadal występuje błąd 500, 403 albo problem z połączeniem z bazą, potrzebna będzie osobna diagnostyka konfiguracji serwera.