Po przeniesieniu strony na nową domenę lub serwer często znikają obrazy, nie działają linki w menu, a część wtyczek zachowuje się dziwnie. Przyczyną są twarde adresy w bazie danych. WordPress zapisuje pełne adresy URL w treści wpisów, w polach niestandardowych, w opcjach motywu i w wielu ustawieniach wtyczek.
Największy problem zaczyna się przy tak zwanych danych serializowanych, czyli zapisywanych w paczkach, gdzie liczy się długość ciągu znaków. Zwykła podmiana adresu metodą znajdź i zamień potrafi wtedy uszkodzić strukturę zapisu. Efekt to popsute widgety, wywalone style albo biała strona. Dlatego potrzebne jest narzędzie, które zmienia adresy bez rozbijania tych struktur.
Dlaczego po migracji psują się linki i zdjęcia
Adresy osadzone w treści i ustawieniach są zwykle pełne, z domeną i protokołem. Po migracji na inny adres lub wymuszeniu https wszystko, co wskazywało na starą domenę, po prostu nie istnieje. Do tego dochodzą ścieżki w polach niestandardowych i wtyczkach, gdzie zwykła podmiana SQL potrafi popsuć serializację.
Better Search Replace robi to samo co klasyczna podmiana, ale bezpiecznie. Wczytuje dane, odnajduje pasujące wartości, podmienia je i z powrotem pakuje w poprawny format. Dzięki temu widżety, ustawienia motywu czy moduły builderów zachowują się normalnie po zmianie domeny.
Na czym polega bezpieczna podmiana w bazie danych
W zwykłej bazie ciąg znaków ma konkretną długość. Dane serializowane dodatkowo przechowują informację o tej długości. Gdy zamienisz http na https, liczba znaków rośnie i rekord przestaje się zgadzać. Plugin podczas podmiany przelicza to na nowo, więc zapis jest spójny.
Co ważne, operacja dzieje się w bazie WordPressa, bez dotykania plików. Jeżeli obraz znajduje się fizycznie w katalogu uploads, a tylko link był zły, po poprawnej podmianie wszystko wraca na swoje miejsce.
Better Search Replace w skrócie
To narzędzie do wyszukiwania i zamiany wartości w tabelach WordPressa z zachowaniem poprawnej serializacji. Przydaje się po migracji, zmianie domeny, przejściu na https, przeniesieniu stagingu na produkcję oraz przy porządkach po klonowaniu witryny.
Instalacja i pierwsze uruchomienie
Instalacja wygląda jak w przypadku każdej wtyczki. Wchodzisz w wtyczki, dodaj nową, wyszukujesz nazwę, instalujesz i włączasz. W menu narzędzia pojawi się pozycja, z której uruchomisz podmianę.
Na starcie widzisz pola wyszukaj i zamień, listę tabel oraz kilka opcji. Najlepiej zacząć od pojedynczego przypadku, na przykład zamiany starej domeny na nową, i sprawdzić wynik trybem na sucho.
Jak użyć trybu na sucho
Tryb na sucho to symulacja. Plugin przeszukuje wybrane tabele, liczy dopasowania i pokazuje, w ilu miejscach wykonałby zamianę, ale niczego jeszcze nie zapisuje. To pozwala ocenić skalę zmian bez ryzyka.
Jeżeli liczby są rozsądne, uruchamiasz realną podmianę z tymi samymi ustawieniami. W przypadku bardzo dużej liczby dopasowań warto podzielić operację na etapy, na przykład najpierw zamienić domenę w treści wpisów, potem w metadanych, a na końcu w opcjach.
Po każdej większej operacji sprawdź front witryny oraz kluczowe funkcje panelu. Jeżeli coś wygląda podejrzanie, łatwiej zidentyfikować problem, gdy wiesz, w którym etapie mogło się to wydarzyć.
Wybór tabel i zakresu podmiany
Nie zawsze trzeba ruszać całą bazę. Najczęściej wystarczy wp posts, wp postmeta i wp options. W sklepach warto uwzględnić też tabele powiązane z produktami i metadanymi zamówień. Unikaj zmiany w polu guid w tabeli wpisów, ponieważ nie służy do publicznych adresów i jego podmiana potrafi powodować problemy z kanałami RSS.
Zwróć uwagę na wielkość liter i spacje. Najbezpieczniej podmieniać pełne adresy wraz z protokołem. Zamiast samej domeny lepiej wpisać pełny ciąg z http lub https, aby nie trafić w wartości, które nie są adresami URL.
Najczęstsze scenariusze użycia
Zmiana domeny, włączenie https, przeniesienie strony z katalogu na główny adres, sklonowanie witryny do środowiska testowego i powrót na produkcję oraz naprawa linków do obrazów po imporcie bazy. W każdym z tych przypadków bezpieczna zamiana w bazie oszczędza wielogodzinnych poprawek ręcznych.
Na co uważać przed uruchomieniem
Zrób świeżą kopię bazy. Wyłącz ciężkie zadania w tle i zaplanuj operację na spokojny czas, szczególnie w sklepie. Po zakończeniu wyczyść cache, przebuduj permalinki i sprawdź losowe podstrony, koszyk oraz formularze, aby upewnić się, że wszystko działa.
Gdy pojawią się błędy lub konflikty
Przy bardzo dużych bazach może zabraknąć czasu wykonania albo pamięci. Wtedy ogranicz zakres do kilku tabel na raz lub wykonaj operację etapami. Jeśli strona nagle zwalnia, tymczasowo wyłącz agresywne cache i monitoruj logi serwera, aby wychwycić błędy.
Jeżeli po podmianie coś się rozsypało, przywróć kopię bazy i spróbuj zawęzić wyszukiwany ciąg. Zdarza się, że wpisałeś zbyt ogólny fragment, który trafił także w pola niezwiązane z adresami.
Dla kogo to dobre rozwiązanie
Jeżeli administrujesz stroną firmową, blogiem lub średnim sklepem i chcesz bezpiecznie poprawić adresy po migracji, to najszybsza droga. Nie wymaga znajomości zapytań SQL, a jednocześnie robi to, co trzeba w danych serializowanych.
Przy gigantycznych instalacjach i setkach tysięcy rekordów rozważ wykonanie operacji poza godzinami ruchu i etapami, aby nie obciążać serwera. Jeżeli rzadko migrujesz strony, trzymaj to narzędzie pod ręką. Oszczędza czas i nerwy wtedy, gdy naprawdę liczy się szybki i bezpieczny powrót wszystkiego na właściwe tory.