Strona nie działa? Zadzwoń.

Tworzenie Stron Rzeszów to marka firmy Prownex IT Services Sp. z o.o. (NIP 8161717256). Tworzymy strony internetowe i sklepy dla małych i średnich firm z Rzeszowa i okolic, utrzymujemy je na własnym hostingu prowde All Inclusive oraz naprawiamy, zabezpieczamy i przenosimy istniejące strony WordPress.

Strona padła po aktualizacji: przebudowa 1:1 i pomiar przed i po

Trzy firmowe strony WordPress przestały działać po aktualizacji albo nie dało się ich już bezpiecznie aktualizować. Zbudowaliśmy je od nowa: ten sam wygląd, ta sama treść, jedna wtyczka zamiast kilkunastu. Na telefonie najcięższa strona pokazuje główną treść po 2,8 s zamiast po 65 s.

Ilustracja: dwa takie same okna przeglądarki, lewe przygniecione odważnikiem i stertą elementów układanki, prawe czyste, między nimi stoper i błyskawica

Opublikowano: 03.11.2026 · stan na listopad 2026 · Redakcja Tworzenie Stron Rzeszów

W skrócie

Strony
trzy strony firmowe WordPress z galeriami zdjęć; dwie z rozbudowanymi motywami i kilkunastoma wtyczkami
Problem
po aktualizacji WordPressa strony przestały działać albo dało się je uruchomić tylko łatkami w starym kodzie
Rozwiązanie
budowa od nowa: ten sam wygląd i treść, darmowy Elementor do edycji, własny lekki motyw, zdjęcia w nowoczesnym formacie
Efekt
na telefonie główna treść pojawia się 2 do 23 razy szybciej, podstrony ważą od 1,5 do 25 razy mniej, jedna wtyczka zamiast 9–21, bez wysyłania danych odwiedzających do obcych firm

Każda aktualizacja mogła zepsuć stronę od nowa

Każda z trzech stron trafiła do nas po tej samej historii: automatyczna aktualizacja WordPressa i strona przestaje działać. Winne były stare elementy: motyw sprzed lat, dodatek do budowania stron, przestarzałe widgety. Dało się je załatać, ale każda kolejna aktualizacja mogła zepsuć stronę od nowa.

Zdecydowaliśmy się na przebudowę: strona ma wyglądać dokładnie tak samo, klient ma ją dalej sam edytować, ale pod spodem ma być tylko to, co potrzebne. Przed i po zmierzyliśmy, jak szybko strony się ładują.

Co zrobiliśmy

  • Ten sam wygląd, sprawdzony na zrzutach. Odtworzyliśmy każdą stronę w stanie, w jakim do nas przyszła, i porównywaliśmy zrzuty ekranu każdej podstrony, na komputerze i telefonie, aż nowa wersja wyglądała tak samo.
  • Czysty WordPress, darmowy Elementor i własny motyw. Klient edytuje stronę metodą „przeciągnij i upuść”. Galerie, formularze, przekierowania ze starych adresów i podstawowe SEO robi motyw, bez dodatkowych wtyczek.
  • Lżejsze zdjęcia w kilku rozmiarach. Telefon pobiera mały plik, ekran komputera większy.
  • Nic nie wysyła danych odwiedzających do obcych firm. Usunęliśmy mapy, czcionki i zabezpieczenia formularzy z zewnętrznych serwerów. Dzięki temu strony nie potrzebują już banera cookies.

Efekt przed przebudową i po niej

Co mierzyliśmy Przed Po
Wynik Google Lighthouse na telefonie (najcięższa podstrona) 30 96
Kiedy na telefonie pojawia się główna treść (najcięższa podstrona) po 65 sekundach po 2,8 sekundy
Waga najcięższej podstrony 13,4 MB 0,5 MB
Wtyczki 9–21 1
Połączenia z obcymi firmami przy wejściu na stronę (jedna ze stron) 5–7 0

Dwie strony zmierzyliśmy w naszym środowisku: starą i nową wersję obok siebie, na identycznym serwerze. Trzecią zmierzyliśmy na żywo tą samą metodą: starą wersję tuż przed wdrożeniem nowej, nową po wdrożeniu.

Co nie było oczywiste

  1. Strona aktualizuje się sama przy pierwszym wejściu. Już przy odtwarzaniu starej strony WordPress sam się zaktualizował i na chwilę ją wyłączył. Ten sam mechanizm zepsuł strony klientów.
  2. Narzędzia pomiarowe widzą lżejszą stronę niż człowiek. Baner cookies na jednej ze starych stron chował się przed narzędziami, więc pomiar „na szybko” pokazałby lepszy wynik, niż był naprawdę.
  3. Te same zdjęcia trzy razy. Dwie wtyczki galerii trzymały własne kopie tych samych zdjęć, a jedna z nich nie była nigdzie używana, choć ładowała się na każdej stronie.
  4. Ogromne zdjęcia w małych okienkach. Zdjęcie 10 MB prosto z aparatu wyświetlało się jako miniatura. Na telefonie to ponad minuta czekania.
  5. Baza danych w 98,5% z dziennika wtyczki bezpieczeństwa. 262 MB zapisów o logowaniach, zero pożytku.
  6. Pozostałość po dawnym włamaniu podwajała pracę serwera. Na jednej stronie każde wyświetlenie uruchamiało WordPressa dwa razy. Przy okazji przebudowy znaleźliśmy i usunęliśmy tę pozostałość.

Wnioski dla właściciela strony

  • Gdy stara strona psuje się po każdej aktualizacji, przebudowa 1:1 bywa tańsza niż kolejne łatanie, a strona zyskuje na szybkości, bezpieczeństwie i prywatności odwiedzających.
  • Klient nic nie traci: wygląd i treść zostają, edycja jest prostsza, stare adresy prowadzą na nowe strony.
  • Najwięcej szybkości dają nie sztuczki, tylko porządek: właściwe rozmiary zdjęć i brak niepotrzebnych dodatków.

Twoja strona przestała działać po aktualizacji? Zaczynamy od naprawy strony WordPress. Gdy starej strony nie da się już naprawić, w pakiecie All Inclusive WaaS budujemy ją od nowa w Elementorze, z zachowaniem wyglądu i podstron (więcej w opiece nad stroną). Nową stronę od zera zaprojektujemy w ramach projektowania stron. To samo podejście w sklepie internetowym opisuje przyspieszenie sklepu WooCommerce.

Opis techniczny: stan wyjściowy, metoda pomiaru i wyniki

Dla administratorów: pełny przebieg z dokładnymi liczbami i konfiguracją. Wersje i wartości: stan na listopad 2026.

Strony i stan wyjściowy

Strona 1Strona 2Strona 3
Problem po aktualizacjiArgumentCountError: Too few arguments to function WP_Widget::__construct() w widgecie motywu z kreatorabłędy krytyczne w motywie i WPBakery 4.12Elementor ≥ 3.26 usunął Elementor\Core\Schemes, widgety motywu → HTTP 500
Motywz kreatora, 86 plików + nieużywany drugi593 pliki (30 MB) + WPBakery 1 084 pliki (18 MB)z własnym pakietem widgetów
Wtyczki9 (5 aktywnych)1521 (m.in. Elementor Pro, Revolution Slider, The Grid, Yoast SEO)
uploads45,4 MB + 7,3 MB kopii galerii92 MBok. 4,2 GB zdjęć
Baza1,27 MB, 22 tabele MyISAM265,8 MB (261,9 MB log audytu AIOWPS)—

Po przebudowie każda strona ma: WordPress 7.1.4, darmowy Elementor 4.3.5 jako jedyną wtyczkę, własny motyw z Tailwind CSS 4 (strona 1: 27 plików, 0,5 MB; strona 2: 67 plików, 0,7 MB; strona 3: 7 własnych widgetów Elementora), zdjęcia WebP z srcset, przekierowania 301 ze wszystkich starych adresów (?page_id=, ?portfolio_page=, /index.php/…, stare pliki JPG), te same ID stron i załączników.

Metoda pomiaru

  • Strony 1 i 2: stara i nowa wersja jednocześnie w naszym środowisku, identyczny stos: wordpress:php8.3-apache, mariadb:11.4 bez zmian w konfiguracji, ten sam php.ini, WORDPRESS_DEBUG wyłączony, opcache włączony, automatyczne aktualizacje wyłączone. Przed pomiarem dwa żądania rozgrzewające na adres.
  • Strona 3: na serwerze produkcyjnym, przez internet: stara 30.10.2026, nowa 02.11.2026, ten sam skrypt.
  • Playwright (Chromium, 1440×900, świeży kontekst, cache wyłączony, przewinięcie do końca strony, User-Agent zwykłego Chrome): liczba żądań, przesłane bajty, JS, żądania do obcych domen, TTFB, DOMContentLoaded, load; mediana z 3 przebiegów.
  • Lighthouse 12.8.2, kategoria Performance: profil mobile (symulowane wolne 4G i słabszy telefon) i desktop, User-Agent zwykłego Chrome, mediana z 3 przebiegów.

Wyniki

Strona 1, Lighthouse (mediana z 3):

podstronamobile: wynikmobile LCPmobile CLSdesktop: wynikdesktop LCPKB
strona główna67 → 1003 458 → 1 653 ms0,806 → 099 → 100689 → 405 ms450 → 145
galeria72 → 997 056 → 2 180 ms0,115 → 095 → 1001 532 → 488 ms1 177 → 228
najcięższa71 → 9811 930 → 2 402 ms0,115 → 091 → 1002 031 → 562 ms3 808 → 407

Strona 1, Playwright (mediana z 3): żądania 19–41 → 10–20, przesłane 449–3 808 KB → 144–407 KB, JS 65–89 KB → 2 KB, load 137–171 ms → 90–113 ms, TTFB 37–49 ms → 62–68 ms (patrz pułapki).

Strona 2, Lighthouse (mediana z 3):

podstronamobile: wynikmobile LCPmobile TBTmobile CLSdesktop: wynikdesktop LCPKB
strona główna63 → 9510 143 → 2 779 ms183 → 0 ms0 → 090 → 1001 792 → 750 ms5 057 → 585
siatka projektów50 → 8113 886 → 5 106 ms120 → 0 ms0,324 → 092 → 991 681 → 1 005 ms2 968 → 744
projekt (najcięższa)30 → 9664 811 → 2 778 ms888 → 0 ms0,377 → 062 → 10010 532 → 546 ms13 507 → 528

Strona 2, Playwright (mediana z 3): żądania 64–74 → 13–35, przesłane 2 376–13 429 KB → 474–927 KB, JS 807–810 KB → 5–106 KB, żądania do obcych domen 5–6 → 0, load 2 019–3 350 ms → 156–239 ms, TTFB 70–107 ms → 78–94 ms.

Strona 3 (produkcja, Playwright):

podstronażądaniaprzesłaneJSobrazyload
strona główna113 → 337 647 → 540 KB422 → 120 KB6 783 → 285 KB658 → 600 ms
podstrona z galerią127 → 1093 506 → 2 378 KB414 → 148 KB2 690 → 2 087 KB568 → 745 ms
kontakt104 → 21920 → 254 KB402 → 111 KB9 → 15 KB1 014 → 526 ms

Podstrona z galerią to jedyne miejsce, gdzie zdarzenie load przyszło później (745 wobec 568 ms); stary pomiar to jeden przebieg innego dnia, więc tej różnicy nie uznajemy za rozstrzygniętą. Nowa strona 3, Lighthouse mobile: 98 / 91 / 98, LCP 2,3 / 3,4 / 2,3 s, TBT 0–13 ms, CLS 0 (dla starej brak pomiaru Lighthouse; jej zdjęcia nie są już dostępne).

Co nie było oczywiste

  1. Pierwsze wejście aktualizuje stronę. Przy odtwarzaniu stron 1 i 2 wp-cron od razu podniósł rdzeń z 7.1.3 do 7.1.4 i część wtyczek; strona przez kilkanaście sekund zwracała 503 (.maintenance). Bez AUTOMATIC_UPDATER_DISABLED pomiar „przed” trafia na tryb konserwacji albo na inną wersję niż zastana. To ten sam mechanizm, który zepsuł strony.
  2. Baner cookies niewidoczny dla narzędzi. Cookie Notice z bot_detection nie wypisuje banera dla User-Agenta z „HeadlessChrome” ani dla curla. Pomiar domyślnym Playwrightem lub Lighthouse mierzy lżejszą stronę niż widzi człowiek; wszystkie pomiary szły z User-Agentem zwykłego Chrome.
  3. Pozostałość po infekcji podwaja pracę serwera. Na stronie 1 nagłówek motywu (tylko dla niezalogowanych) ładował <script src=/wp-includes/js/stat096.php>; pliku nie było, więc każde wyświetlenie robiło drugie pełne uruchomienie WordPressa (strona 404, ok. 25 KB HTML pobierane jako skrypt). Przy przebudowie znaleziony też webshell w uploads.
  4. Te same zdjęcia trzy razy. NextGEN trzymał własne kopie (z plikami _backup) identyczne co do MD5 z biblioteką mediów, a druga wtyczka galerii czwartą kopię, nigdzie nieużywaną, choć jej CSS i JS ładowały się na każdej stronie.
  5. Brak srcset przy obrazkach bez klasy wp-image-N. Obrazy wstawione z tymczasowym id __wp-temp-img-id nie dostają wariantów, więc miniatura 401 px pobierała oryginał (10 zdjęć, 3,7 MB na jednej podstronie). Na stronie 2 zdjęcie 6240×4160 (10,3 MB) w całości: stąd mobile LCP 64,8 s.
  6. Wariant 400 px to za mało dla pola 401 px. Przeglądarka wybierała 800 px; pionowe zdjęcia bez wariantu pośredniego ładowały oryginał. Rozmiary medium 402 px i medium_large 804 px obcięły zdjęcia jednej podstrony z 838 do 381 KB.
  7. Elementor kosztuje po stronie serwera. TTFB strony 1 wzrósł z 37–49 ms do 62–68 ms: lżejsza strona jest generowana dłużej, bo Elementor ładuje swój rdzeń przy każdym żądaniu. Dla odwiedzającego wygrywa i tak nowa wersja (mniej danych, brak blokującego JS), ale bez pamięci podręcznej stron różnica na serwerze jest realna.
  8. Elementor domyślnie ładuje jQuery i ok. 230 KB JS nawet na stronie bez interakcji. Własny lightbox (natywny <dialog>, 4,8 KB z menu) i warunkowe wyłączenie frontendu Elementora na stronach bez widgetów z JS: 262–373 KB → 5 KB. Gdy redaktor doda karuzelę albo zakładki, skrypty wracają same.
  9. Elementor 4 z domyślnymi eksperymentami dokłada CSS edytora V4 (beta), inline JS leniwego ładowania teł i <meta name="generator"> z listą funkcji; wyłączone opcjami.
  10. Tailwind @layer przegrywa z CSS Elementora. Style w @layer components, a CSS Elementora poza warstwami, więc wygrywa Elementor niezależnie od specyficzności (np. .elementor img { height: auto } psuło zdjęcia hero). Komponenty motywu trzeba trzymać poza @layer.
  11. Marginesy nie zapadają się w kontenerach Elementora (flex). Układy starych motywów opierały się na zapadaniu marginesów i komórkach tabel; odtworzenie 1:1 wymagało display: flow-root i paddingów kontenerów.
  12. Fonty „lokalne” ładowane z obcej domeny. Wtyczka do lokalnych fontów zapisała CSS z adresem względnym protokołu (//www.<domena>/wp-content/uploads/omgf/…); search-replace w bazie tego nie zmienia, bo to plik.
  13. Hotlinki do serwera demo motywu. Tło stopki i wzór w sekcji strony głównej ładowały się z serwera demonstracyjnego producenta motywu; wzór był widoczny tylko dlatego, że brakowało właściwego obrazu tła.
  14. CAPTCHA logowania ustawiała PHPSESSID każdemu odwiedzającemu, a wtyczka map ładowała Google Maps JS na każdej podstronie, choć mapy na stronie nie było. Razem 5–7 obcych domen przy pierwszym wejściu; po przebudowie 0 ciasteczek, 0 danych w przeglądarce, 0 obcych domen przed zgodą (mapy ładują się dopiero po kliknięciu).
  15. Nie wszystko wyszło idealnie. Siatka projektów strony 2 ma na telefonie wynik 81 i LCP 5,1 s: dużo kafelków ze zdjęciami nad zgięciem ekranu. To miejsce na kolejną optymalizację (mniejsze miniatury, priorytet pierwszego kafelka).

Rozwiązanie w skrócie

  • Odtworzenie stanu zastanego z archiwum, paczki poprawek i zrzutu bazy, automatyczne aktualizacje wyłączone.
  • Inwentaryzacja stron, menu, typów treści, wtyczek (co z nich faktycznie jest używane), zdjęć i bazy.
  • Czysty WordPress, darmowy Elementor, własny motyw (Tailwind, Fontsource, Lucide, własne widgety Elementora), import treści skryptami z zachowaniem ID, konwersja zdjęć do WebP (maks. 1600–2048 px) z wariantami.
  • Porównanie zrzutów każdej podstrony (desktop 1440×900, mobile 390×844) do wizualnej równoważności (±3 do ±60 px wysokości).
  • Kontrola: wszystkie strony 200, przekierowania 301, formularze, audyt świeżego odwiedzającego, log PHP bez błędów.

Rezultaty

EtykietaWartość
Lighthouse mobile, najcięższa podstrona30 → 96 (strona 2), 71 → 98 (strona 1)
Mobile LCP, najcięższa podstrona64,8 s → 2,8 s (strona 2), 11,9 s → 2,4 s (strona 1)
Przesłane dane, najcięższa podstrona13,4 MB → 0,5 MB (strona 2), 3,8 MB → 0,4 MB (strona 1)
Strona główna strony 3 (produkcja)113 żądań i 7,6 MB → 33 żądania i 0,5 MB
JavaScript na podstronie807 KB → 5–106 KB (strona 2), 65–89 KB → 2 KB (strona 1)
Wtyczki9 / 15 / 21 → 1 (darmowy Elementor)
Baza danych265,8 MB → 1,4 MB (strona 2)
Obce domeny i ciasteczka przy pierwszym wejściu5–7 domen, PHPSESSID → 0

Wnioski

  • Strona, która psuje się po każdej aktualizacji, to zwykle stary, rozbudowany motyw z dodatkami, a nie WordPress. Przebudowa 1:1 na jedną wtyczkę usuwa przyczynę, a nie objaw.
  • Najwięcej dały podstawy: właściwe rozmiary zdjęć z srcset, brak nieużywanych wtyczek ładujących swoje pliki na każdej stronie i brak zewnętrznych skryptów.
  • Elementor ma swój koszt (serwer, jQuery, CSS); da się go ograniczyć, ale warto mierzyć, a nie zakładać.
  • Pomiar trzeba robić uczciwie: ten sam stos dla obu wersji, wyłączone aktualizacje, User-Agent zwykłej przeglądarki.

Gdy strona psuje się po każdej aktualizacji

  • Naprawa strony WordPress (także po włamaniu)

    Gdy strona pokazuje błąd, nie da się zalogować do panelu albo strona została zainfekowana i trzeba ją wyczyścić.

    Wycena indywidualna

    • diagnoza przyczyny: wtyczki, motyw, wersja PHP, baza danych, logi serwera
    • kopia plików i bazy danych przed zmianami
    • naprawa błędu albo usunięcie złośliwego kodu i zamknięcie luki
    • kontrola panelu, formularza i najważniejszych podstron po naprawie

    Co dostajesz

    Przed naprawą: cenę do akceptacji. Po naprawie: krótki opis przyczyny i tego, co zrobić, żeby problem nie wrócił.

  • Hosting prowde All Inclusive WaaS

    Strona jako usługa (website as a service) dla firm, które chcą, żeby ich stroną zajmował się dedykowany programista: każdą awarię po aktualizacji naprawiamy bez limitu, a gdy starej strony nie da się już naprawić, budujemy ją od nowa 1:1.

    2 500 zł netto / rok

    • wszystko z pakietu All Inclusive Pro: hosting, SSL, codzienne kopie, monitoring, automatyczne aktualizacje, aktualne PHP i serwer
    • dedykowany programista dba o techniczną stronę: aktualizacje i działanie strony (bez dodawania treści i administrowania)
    • naprawa strony po aktualizacji bez limitu
    • gdy strony po aktualizacji nie da się naprawić: nowa strona w Elementorze z minimalną liczbą wtyczek, z zachowaniem wyglądu, podstron i treści, bez luk bezpieczeństwa (nie każdy szczegół dawnych funkcji da się odtworzyć)

Jeśli Twoja strona nie działa, zadzwoń, chętnie to naprawimy!

Telefon (polski) +48 501 250 220

Dostępni: poniedziałek–piątek, 9:00–17:00