{"id":148,"date":"2026-05-08T19:17:17","date_gmt":"2026-05-08T17:17:17","guid":{"rendered":"https:\/\/projektwordpress.pl\/index.php\/2026\/05\/08\/better-search-replace-bezpieczna-podmiana-adresow-url-po-migracji-wordpressa-bez-psucia-serializowanych-danych\/"},"modified":"2026-05-08T19:17:17","modified_gmt":"2026-05-08T17:17:17","slug":"better-search-replace-bezpieczna-podmiana-adresow-url-po-migracji-wordpressa-bez-psucia-serializowanych-danych","status":"publish","type":"post","link":"https:\/\/projektwordpress.pl\/index.php\/2026\/05\/08\/better-search-replace-bezpieczna-podmiana-adresow-url-po-migracji-wordpressa-bez-psucia-serializowanych-danych\/","title":{"rendered":"Better Search Replace &#8211; bezpieczna podmiana adres\u00f3w URL po migracji WordPressa bez psucia serializowanych danych"},"content":{"rendered":"<p>Po przeniesieniu strony na now\u0105 domen\u0119 lub serwer cz\u0119sto znikaj\u0105 obrazy, nie dzia\u0142aj\u0105 linki w menu, a cz\u0119\u015b\u0107 wtyczek zachowuje si\u0119 dziwnie. Przyczyn\u0105 s\u0105 twarde adresy w bazie danych. WordPress zapisuje pe\u0142ne adresy URL w tre\u015bci wpis\u00f3w, w polach niestandardowych, w opcjach motywu i w wielu ustawieniach wtyczek.<\/p>\n<p>Najwi\u0119kszy problem zaczyna si\u0119 przy tak zwanych danych serializowanych, czyli zapisywanych w paczkach, gdzie liczy si\u0119 d\u0142ugo\u015b\u0107 ci\u0105gu znak\u00f3w. Zwyk\u0142a podmiana adresu metod\u0105 znajd\u017a i zamie\u0144 potrafi wtedy uszkodzi\u0107 struktur\u0119 zapisu. Efekt to popsute widgety, wywalone style albo bia\u0142a strona. Dlatego potrzebne jest narz\u0119dzie, kt\u00f3re zmienia adresy bez rozbijania tych struktur.<\/p>\n<h2>Dlaczego po migracji psuj\u0105 si\u0119 linki i zdj\u0119cia<\/h2>\n<p>Adresy osadzone w tre\u015bci i ustawieniach s\u0105 zwykle pe\u0142ne, z domen\u0105 i protoko\u0142em. Po migracji na inny adres lub wymuszeniu https wszystko, co wskazywa\u0142o na star\u0105 domen\u0119, po prostu nie istnieje. Do tego dochodz\u0105 \u015bcie\u017cki w polach niestandardowych i wtyczkach, gdzie zwyk\u0142a podmiana SQL potrafi popsu\u0107 serializacj\u0119.<\/p>\n<p><a href=\"https:\/\/wordpress.org\/plugins\/better-search-replace\/\">Zobacz szczeg\u00f3\u0142y wtyczki<\/a><\/p>\n<p>Better Search Replace robi to samo co klasyczna podmiana, ale bezpiecznie. Wczytuje dane, odnajduje pasuj\u0105ce warto\u015bci, podmienia je i z powrotem pakuje w poprawny format. Dzi\u0119ki temu wid\u017cety, ustawienia motywu czy modu\u0142y builder\u00f3w zachowuj\u0105 si\u0119 normalnie po zmianie domeny.<\/p>\n<h2>Na czym polega bezpieczna podmiana w bazie danych<\/h2>\n<p>W zwyk\u0142ej bazie ci\u0105g znak\u00f3w ma konkretn\u0105 d\u0142ugo\u015b\u0107. Dane serializowane dodatkowo przechowuj\u0105 informacj\u0119 o tej d\u0142ugo\u015bci. Gdy zamienisz http na https, liczba znak\u00f3w ro\u015bnie i rekord przestaje si\u0119 zgadza\u0107. Plugin podczas podmiany przelicza to na nowo, wi\u0119c zapis jest sp\u00f3jny.<\/p>\n<p>Co wa\u017cne, operacja dzieje si\u0119 w bazie WordPressa, bez dotykania plik\u00f3w. Je\u017celi obraz znajduje si\u0119 fizycznie w katalogu uploads, a tylko link by\u0142 z\u0142y, po poprawnej podmianie wszystko wraca na swoje miejsce.<\/p>\n<h2>Better Search Replace w skr\u00f3cie<\/h2>\n<p>To narz\u0119dzie do wyszukiwania i zamiany warto\u015bci w tabelach WordPressa z zachowaniem poprawnej serializacji. Przydaje si\u0119 po migracji, zmianie domeny, przej\u015bciu na https, przeniesieniu stagingu na produkcj\u0119 oraz przy porz\u0105dkach po klonowaniu witryny.<\/p>\n<h2>Instalacja i pierwsze uruchomienie<\/h2>\n<p>Instalacja wygl\u0105da jak w przypadku ka\u017cdej wtyczki. Wchodzisz w wtyczki, dodaj now\u0105, wyszukujesz nazw\u0119, instalujesz i w\u0142\u0105czasz. W menu narz\u0119dzia pojawi si\u0119 pozycja, z kt\u00f3rej uruchomisz podmian\u0119.<\/p>\n<p>Na starcie widzisz pola wyszukaj i zamie\u0144, list\u0119 tabel oraz kilka opcji. Najlepiej zacz\u0105\u0107 od pojedynczego przypadku, na przyk\u0142ad zamiany starej domeny na now\u0105, i sprawdzi\u0107 wynik trybem na sucho.<\/p>\n<h2>Jak u\u017cy\u0107 trybu na sucho<\/h2>\n<p>Tryb na sucho to symulacja. Plugin przeszukuje wybrane tabele, liczy dopasowania i pokazuje, w ilu miejscach wykona\u0142by zamian\u0119, ale niczego jeszcze nie zapisuje. To pozwala oceni\u0107 skal\u0119 zmian bez ryzyka.<\/p>\n<p>Je\u017celi liczby s\u0105 rozs\u0105dne, uruchamiasz realn\u0105 podmian\u0119 z tymi samymi ustawieniami. W przypadku bardzo du\u017cej liczby dopasowa\u0144 warto podzieli\u0107 operacj\u0119 na etapy, na przyk\u0142ad najpierw zamieni\u0107 domen\u0119 w tre\u015bci wpis\u00f3w, potem w metadanych, a na ko\u0144cu w opcjach.<\/p>\n<p>Po ka\u017cdej wi\u0119kszej operacji sprawd\u017a front witryny oraz kluczowe funkcje panelu. Je\u017celi co\u015b wygl\u0105da podejrzanie, \u0142atwiej zidentyfikowa\u0107 problem, gdy wiesz, w kt\u00f3rym etapie mog\u0142o si\u0119 to wydarzy\u0107.<\/p>\n<h2>Wyb\u00f3r tabel i zakresu podmiany<\/h2>\n<p>Nie zawsze trzeba rusza\u0107 ca\u0142\u0105 baz\u0119. Najcz\u0119\u015bciej wystarczy wp posts, wp postmeta i wp options. W sklepach warto uwzgl\u0119dni\u0107 te\u017c tabele powi\u0105zane z produktami i metadanymi zam\u00f3wie\u0144. Unikaj zmiany w polu guid w tabeli wpis\u00f3w, poniewa\u017c nie s\u0142u\u017cy do publicznych adres\u00f3w i jego podmiana potrafi powodowa\u0107 problemy z kana\u0142ami RSS.<\/p>\n<p>Zwr\u00f3\u0107 uwag\u0119 na wielko\u015b\u0107 liter i spacje. Najbezpieczniej podmienia\u0107 pe\u0142ne adresy wraz z protoko\u0142em. Zamiast samej domeny lepiej wpisa\u0107 pe\u0142ny ci\u0105g z http lub https, aby nie trafi\u0107 w warto\u015bci, kt\u00f3re nie s\u0105 adresami URL.<\/p>\n<h2>Najcz\u0119stsze scenariusze u\u017cycia<\/h2>\n<p>Zmiana domeny, w\u0142\u0105czenie https, przeniesienie strony z katalogu na g\u0142\u00f3wny adres, sklonowanie witryny do \u015brodowiska testowego i powr\u00f3t na produkcj\u0119 oraz naprawa link\u00f3w do obraz\u00f3w po imporcie bazy. W ka\u017cdym z tych przypadk\u00f3w bezpieczna zamiana w bazie oszcz\u0119dza wielogodzinnych poprawek r\u0119cznych.<\/p>\n<h2>Na co uwa\u017ca\u0107 przed uruchomieniem<\/h2>\n<p>Zr\u00f3b \u015bwie\u017c\u0105 kopi\u0119 bazy. Wy\u0142\u0105cz ci\u0119\u017ckie zadania w tle i zaplanuj operacj\u0119 na spokojny czas, szczeg\u00f3lnie w sklepie. Po zako\u0144czeniu wyczy\u015b\u0107 cache, przebuduj permalinki i sprawd\u017a losowe podstrony, koszyk oraz formularze, aby upewni\u0107 si\u0119, \u017ce wszystko dzia\u0142a.<\/p>\n<h2>Gdy pojawi\u0105 si\u0119 b\u0142\u0119dy lub konflikty<\/h2>\n<p>Przy bardzo du\u017cych bazach mo\u017ce zabrakn\u0105\u0107 czasu wykonania albo pami\u0119ci. Wtedy ogranicz zakres do kilku tabel na raz lub wykonaj operacj\u0119 etapami. Je\u015bli strona nagle zwalnia, tymczasowo wy\u0142\u0105cz agresywne cache i monitoruj logi serwera, aby wychwyci\u0107 b\u0142\u0119dy.<\/p>\n<p>Je\u017celi po podmianie co\u015b si\u0119 rozsypa\u0142o, przywr\u00f3\u0107 kopi\u0119 bazy i spr\u00f3buj zaw\u0119zi\u0107 wyszukiwany ci\u0105g. Zdarza si\u0119, \u017ce wpisa\u0142e\u015b zbyt og\u00f3lny fragment, kt\u00f3ry trafi\u0142 tak\u017ce w pola niezwi\u0105zane z adresami.<\/p>\n<h2>Dla kogo to dobre rozwi\u0105zanie<\/h2>\n<p>Je\u017celi administrujesz stron\u0105 firmow\u0105, blogiem lub \u015brednim sklepem i chcesz bezpiecznie poprawi\u0107 adresy po migracji, to najszybsza droga. Nie wymaga znajomo\u015bci zapyta\u0144 SQL, a jednocze\u015bnie robi to, co trzeba w danych serializowanych.<\/p>\n<p><a href=\"https:\/\/wordpress.org\/plugins\/better-search-replace\/\">Sprawd\u017a wtyczk\u0119 w praktyce<\/a><\/p>\n<p>Przy gigantycznych instalacjach i setkach tysi\u0119cy rekord\u00f3w rozwa\u017c wykonanie operacji poza godzinami ruchu i etapami, aby nie obci\u0105\u017ca\u0107 serwera. Je\u017celi rzadko migrujesz strony, trzymaj to narz\u0119dzie pod r\u0119k\u0105. Oszcz\u0119dza czas i nerwy wtedy, gdy naprawd\u0119 liczy si\u0119 szybki i bezpieczny powr\u00f3t wszystkiego na w\u0142a\u015bciwe tory.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Po przeniesieniu strony na now\u0105 domen\u0119 lub serwer cz\u0119sto znikaj\u0105 obrazy, nie dzia\u0142aj\u0105 linki w menu, a cz\u0119\u015b\u0107 wtyczek zachowuje si\u0119 dziwnie. Przyczyn\u0105 s\u0105&hellip;<\/p>\n","protected":false},"author":1,"featured_media":149,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-148","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wtyczki-wordpress"],"_links":{"self":[{"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/posts\/148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/comments?post=148"}],"version-history":[{"count":0,"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/posts\/148\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/media\/149"}],"wp:attachment":[{"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/media?parent=148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/categories?post=148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/tags?post=148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}