Dla administratorów: pełny przebieg z dokładnymi komunikatami, mechanizmem każdego błędu i macierzą wyników. Wersje: stan na listopad 2026.
W skrócie
| Element | Szczegóły |
| Strona | WordPress 4.9.8 pl_PL, Elementor 2.3.4 (29.11.2018), OceanWP 1.5.32 + Ocean Extra 1.4.28, Essential Addons for Elementor (EAEL) 2.8.3, Contact Form 7 5.0.5, Yoast SEO 9.2; Apache 2.4 + mod_php (oficjalne obrazy php:<wersja>-apache), MySQL 5.7.44 |
| Ścieżka 1 | strona zamrożona, PHP 5.6.40, 7.0.33, 7.1.33, 7.2.34, 7.3.33, 7.4.33, 8.0.30, 8.1.34, 8.2.35, 8.3.36, 8.4.27, 8.5.12 |
| Ścieżka 2 | WordPress aktualizowany (pliki pakietu pl_PL + wp core update-db) przez 4.9.35, 5.0.31, 5.1.28, 5.2.30, 5.3.27, 5.4.25, 5.5.24, 5.6.23, 5.7.21, 5.8.19, 5.9.20, 6.0.18, 6.2.15, 6.4.14, 6.6.11, 6.8.12, 6.9.11, 7.0.8, 7.1.4; każda wersja na PHP 7.3/7.4 i na najwyższym PHP z oficjalnej tabeli zgodności; WP 7.1.4 na 7.4 i 8.0–8.5 |
| Ścieżka 3 | WP 7.1.4 + PHP 7.4, Elementor z 2.3.4 jednym skokiem do 2.9.14, 3.0.16, 3.5.6, 3.6.8, 3.13.4, 3.35.9, 4.3.5; EAEL, OceanWP, Ocean Extra, CF7, Yoast z 2018 |
| Pierwsza awaria, ścieżka 1 | PHP 8.0: Call to undefined function get_magic_quotes_gpc(), HTTP 500 na wszystkich adresach |
| Pierwsza awaria, ścieżka 2 | na PHP 7.4 żadna do WP 7.1.4; na PHP 8.0+ (WP 5.6 i nowsze) kokpit: Uncaught TypeError: json_decode() w elementor/includes/api.php:111 |
| Pierwsza awaria, ścieżka 3 | 2.9.14 i 3.0.16: działa (okno „Note: Flexbox Changes”, błąd JS Ocean Extra bez wpływu na zapis); 3.5.6: edytor bez kitu; 3.6.8: Class 'Elementor\Scheme_Typography' not found (EAEL), HTTP 500 |
Środowisko i metoda
- Wersje z 2018 z oficjalnych archiwów: rdzeń z
pl.wordpress.org/wordpress-4.9.8-pl_PL.zip, wtyczki i motyw
z downloads.wordpress.org w konkretnych wersjach (tagi Elementora < 3.0 i Yoasta < 18.0 są już usunięte z SVN
wtyczek, ale archiwa zip nadal się pobierają). Stan wybrany na 30.11.2018, tuż przed WordPressem 5.0. Tłumaczenia
wtyczek z paczek językowych z tamtego okresu (Elementor 2.2.7, CF7 4.9, Yoast 8.4).
- Treść: strony zbudowane z JSON-a w formacie
_elementor_data Elementora 2.3 i zapisane przez
Document::save(), czyli tak jak zapisuje edytor. Widżety Elementora: heading, text-editor, button, icon-box, image,
icon-list, counter, image-carousel (slick), testimonial, star-rating, tabs, progress, video, image-box, accordion,
toggle, image-gallery z lightboxem, social-icons, google_maps, shortcode z formularzem CF7; sekcje z tłem
background-attachment: fixed (w darmowym Elementorze 2.x to jest „paralaksa”; ruchoma paralaksa przyszła w Pro 2.5).
EAEL: fancy-text, creative-button, cta-box, team-member, testimonial, pricing-table, info-box, flip-box,
contact-form-7. Ikony Font Awesome 4 (fa fa-…), jak w Elementorze przed 2.6.
- Serwer:
display_errors = Off, log_errors = On, error_reporting = E_ALL; w wp-config.php
WP_DEBUG = true, WP_DEBUG_DISPLAY = false (gość widzi to co na produkcji, log ma wszystko). Osobny wariant
„tani hosting”: WP_DEBUG = false i display_errors = On. Ruch wychodzący zablokowany (WP_HTTP_BLOCK_EXTERNAL)
z wyjątkiem my.elementor.com, żeby stary Elementor rozmawiał ze swoim API jak żywa strona.
- Kontrola każdego przebiegu (Playwright, Chromium): 7 adresów (5 stron Elementora, blog, wpis): kod HTTP, błędy
JS (
pageerror, konsola), stan widżetów w DOM (karuzela zainicjowana, liczniki doliczyły do 15/450/98/6, aktywna
zakładka, paski postępu, tekst EAEL, liczba obrazów galerii, formularz), zrzut całej strony porównany pikselowo ze
stanem bazowym; logowanie, kokpit, wtyczki, lista stron, edycja strony w edytorze WordPressa; edytor Elementora
(wczytanie podglądu, kliknięcie widżetu, zapis save_builder); formularz CF7 (odpowiedź REST i e-mail w Mailpit);
log PHP pogrupowany po komunikacie.
- Stan bazowy: PHP 7.2.34 + WP 4.9.8: 7/7 adresów 200, 0 błędów JS, edytor wczytuje się w 1,6–2,2 s i zapisuje,
e-mail z formularza dochodzi, jQuery 1.12.4 + jQuery Migrate 1.4.1. W logu jedno ostrzeżenie z API Elementora
(niżej). W edytorze już w 2018 jest błąd JS
ReferenceError: butterbean is not defined (skrypt metaboxa Ocean
Extra), który niczego nie blokuje.
Ścieżka 1: zamrożona strona na kolejnych PHP
| PHP | Front (7 adresów) | Panel | Edytor Elementora | Formularz | Log PHP (przebieg) | Werdykt |
| 5.6.40 | 200, bez zmian | OK | OK, zapis OK | OK | 1 Warning (API Elementora) | działa |
| 7.0.33 | 200 | OK | OK | OK | 1 Warning | działa |
| 7.1.33 | 200 | OK | OK | OK | 1 Warning | działa |
| 7.2.34 | 200 | OK | OK | OK | 1 Warning | działa (stan bazowy) |
| 7.3.33 | 200 | OK | OK | OK | 33 Warning, 35 Notice | działa z ostrzeżeniami |
| 7.4.33 | 200 | OK | OK | OK | 33 Warning, 123 Notice, 2017 Deprecated | działa z ostrzeżeniami |
| 8.0.30 | 500, pusta strona (39 bajtów) | logowanie niedostępne | niedostępny | niedostępny | 18 Fatal | błąd krytyczny |
| 8.1.34 do 8.5.12 | 500, pusta strona | niedostępny | niedostępny | niedostępny | 9 Fatal + 108–279 Deprecated | błąd krytyczny |
PHP 7.3, rdzeń WordPressa 4.9.8:
PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/html/wp-includes/pomo/plural-forms.php on line 210
PHP Notice: compact(): Undefined variable: groupby in /var/www/html/wp-includes/class-wp-comment-query.php on line 853
PHP Notice: compact(): Undefined variable: ID in /var/www/html/wp-includes/post.php on line 3387
PHP 7.3 zaczął ostrzegać przy continue wewnątrz switch (ostrzeżenie kompilacji, przy każdym wczytaniu pliku) i przy
compact() z nieistniejącą zmienną. Późniejsze wydania WordPressa już tych wpisów nie dają (4.9.35 i 5.0.31 na PHP 7.3/7.4 w naszym teście).
PHP 7.4, dodatkowo:
PHP Deprecated: Function get_magic_quotes_gpc() is deprecated in /var/www/html/wp-includes/load.php on line 651
PHP Deprecated: Function get_magic_quotes_gpc() is deprecated in /var/www/html/wp-includes/formatting.php on line 4358
PHP Deprecated: Array and string offset access syntax with curly braces is deprecated in /var/www/html/wp-includes/class-wp-editor.php on line 730
PHP Notice: Trying to access array offset on value of type null in /var/www/html/wp-content/plugins/elementor/includes/base/controls-stack.php on line 1416
PHP Notice: Trying to access array offset on value of type null in /var/www/html/wp-content/plugins/essential-addons-for-elementor-lite/elements/pricing-table/pricing-table.php on line 1711
PHP Notice: Trying to access array offset on value of type bool in /var/www/html/wp-content/plugins/essential-addons-for-elementor-lite/elements/flipbox/flipbox.php on line 1147
Samo get_magic_quotes_gpc() dało 2009 wpisów w jednym przebiegu (formatting.php linia 4358 przy każdym wp_unslash
z formularza i stripslashes_deep). Na produkcji z WP_DEBUG = false notice i deprecated nie trafiają do logu.
PHP 8.0 i nowsze, każde żądanie, także wp-login.php i wp-admin:
PHP Fatal error: Uncaught Error: Call to undefined function get_magic_quotes_gpc() in /var/www/html/wp-includes/load.php:651
Stack trace:
#0 /var/www/html/wp-settings.php(333): wp_magic_quotes()
#1 /var/www/html/wp-config.php(112): require_once('/var/www/html/w...')
#2 /var/www/html/wp-load.php(37): require_once('/var/www/html/w...')
#3 /var/www/html/wp-blog-header.php(13): require_once('/var/www/html/w...')
Mechanizm: PHP 8.0 usunął get_magic_quotes_gpc() (deprecated od 7.4). WordPress 4.9.8 woła ją w wp_magic_quotes()
bez sprawdzenia function_exists(), w wp-settings.php przed wczytaniem wtyczek i motywu. Strona pada w rdzeniu, więc
żadna wtyczka nie jest nawet ładowana. Odpowiedź: HTTP/1.1 500, treść <html><head></head><body></body></html>
(39 bajtów) przy display_errors = Off; WordPress 4.9 nie ma jeszcze ekranu „krytyczny błąd” (wprowadzony w 5.2).
WordPress 4.9.35, najnowsze wydanie bezpieczeństwa tej gałęzi, daje na PHP 8.0 dokładnie to samo (to samo wywołanie w load.php linia 651). Wywołanie zniknęło z rdzenia dopiero w WordPressie 5.3. W 8.1+ dochodzą
deprecated rdzenia, np. Return type of WP_Theme::offsetGet($offset) should either be compatible with
ArrayAccess::offsetGet(mixed $offset): mixed.
Wariant display_errors = On, WP_DEBUG = false (częsty na tanich hostingach w 2018):
- PHP 7.4: na górze każdej strony
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/html/wp-includes/pomo/plural-forms.php on line 210.
Tekst przed <!DOCTYPE> przełącza przeglądarkę w tryb quirks: nagłówek OceanWP się rozjeżdża, tło sekcji hero
znika, strona rośnie z 3397 do 4255 px. Logowanie wraca na wp-login.php, bo nie da się
ustawić ciasteczek:
PHP Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-includes/pomo/plural-forms.php:210) in /var/www/html/wp-includes/rest-api/class-wp-rest-server.php on line 1248.
plural-forms.php jest wczytywany przy tłumaczeniu z formą liczby mnogiej, czyli na każdej stronie po polsku.
PHP 7.3 w tym wariancie: to samo (ostrzeżenie, rozjechany nagłówek, brak logowania). PHP 7.2: czysto, bo ostrzeżenie
pojawiło się dopiero w 7.3.
- PHP 8.0:
HTTP 200 (a nie 500, bo wyjście zaczęło się przed błędem) i treść błędu krytycznego ze ścieżkami serwera
widoczna dla każdego gościa.
Ścieżka 2: WordPress aktualizowany, wtyczki i motyw z 2018
| WordPress (db_version) | jQuery / Migrate | na PHP 7.3/7.4 | na PHP 8.x (najwyższe zgodne) |
| 4.9.35 (38590) | 1.12.4 / 1.4.1 | działa (7.2, 7.4) | 8.0: jak 4.9.8, HTTP 500 wszędzie |
| 5.0.31 (43764), 5.1.28 (44719), 5.2.30 | 1.12.4 / 1.4.1 | działa (7.3) | (bez wsparcia PHP 8) |
| 5.3.27 (45805), 5.4.25 (47018) | 1.12.4 / 1.4.1 | działa (7.4) | (bez wsparcia PHP 8) |
| 5.5.24 (48748) | 1.12.4 / brak Migrate | działa | (bez wsparcia PHP 8) |
| 5.6.23 (49752), 5.7.21, 5.8.19 | 3.5.1–3.6.0 / 3.3.2 | działa | 8.0: front OK, kokpit/wtyczki/strony „krytyczny błąd” |
| 5.9.20 (51917), 6.0.18 (53496) | 3.6.0 / 3.3.2 | działa | 8.1: jak wyżej |
| 6.2.15, 6.4.14 (56657), 6.6.11 (57155) | 3.6.4–3.7.1 / 3.4.x | działa | 8.2/8.3: jak wyżej |
| 6.8.12 (60421), 6.9.11 (60717), 7.0.8 (61833), 7.1.4 | 3.7.1 / 3.4.1 | działa | 8.4/8.5: jak wyżej |
| 7.1.4 | 3.7.1 / 3.4.1 | działa (7.4) | 8.0, 8.1, 8.2, 8.3, 8.4, 8.5: jak wyżej |
We wszystkich przebiegach ścieżki 2 front zwracał 200 na 7/7 adresach, karuzela, liczniki, zakładki, akordeon i
widżety EAEL działały, formularz wysyłał e-mail, edytor Elementora 2.3.4 wczytywał się w 1,4–1,8 s i zapisywał zmiany,
także na PHP 8.5. Zmiany w WordPressie, o które pytamy najczęściej, nie zepsuły tej strony: 5.0 (edytor bloków), 5.5
(usunięcie jQuery Migrate), 5.6 (jQuery 3.5.1). Elementor 2.3.4 nie korzysta z API usuniętych przez jQuery 3.
Kokpit na PHP 8.x (WordPress 5.6 i każdy nowszy):
PHP Fatal error: Uncaught TypeError: json_decode(): Argument #1 ($json) must be of type string, array given in /var/www/html/wp-content/plugins/elementor/includes/api.php:111
Stack trace:
#0 /var/www/html/wp-content/plugins/elementor/includes/api.php(111): json_decode(Array)
#1 /var/www/html/wp-content/plugins/elementor/includes/api.php(142): Elementor\Api::get_info_data()
#2 /var/www/html/wp-content/plugins/elementor/core/admin/admin.php(312): Elementor\Api::get_upgrade_notice()
#3 /var/www/html/wp-includes/class-wp-hook.php(287): Elementor\Core\Admin\Admin->admin_notices('')
Na ekranie: „W witrynie wystąpił krytyczny błąd. Instrukcje znajdziesz w skrzynce email administratora witryny.”
pod nagłówkiem kokpitu. Mechanizm: Elementor 2.3.4 w hooku admin_notices pobiera
https://my.elementor.com/api/v1/info/ i robi json_decode( $info_data['library']['categories'] ), bo w 2018 to
pole było napisem z JSON-em. Dziś API zwraca tam tablicę (stan na 2026-11). Na PHP 7.x skutkiem jest ostrzeżenie
PHP Warning: json_decode() expects parameter 1 to be string, array given in /var/www/html/wp-content/plugins/elementor/includes/api.php on line 111,
widoczne w logu nawet na PHP 5.6 i 7.2. Od PHP 8.0 funkcje wbudowane rzucają TypeError przy złym typie argumentu.
Wyjątek pada przed set_transient(), więc zapytanie i błąd powtarzają się przy każdym wejściu do panelu. Kontrola:
ten sam WP 5.6.23 na PHP 8.0 z zablokowanym my.elementor.com dał kokpit bez błędu (tylko 19 Warning i 136 Deprecated).
Front i edytor nie wywołują admin_notices, dlatego działały.
Pozostałe wpisy, które wtyczki z 2018 zostawiają na PHP 8.x (WP 7.1.4 + PHP 8.5, jeden przebieg: 4 Fatal z kokpitu,
16 Warning, 29 Notice, 167 Deprecated):
PHP Warning: Trying to access array offset on null in /var/www/html/wp-content/plugins/elementor/includes/base/controls-stack.php on line 1416
PHP Deprecated: Creation of dynamic property Ocean_Extra::$plugin_url is deprecated in /var/www/html/wp-content/plugins/ocean-extra/ocean-extra.php on line 87
PHP Deprecated: Return type of WPCF7_FormTag::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
PHP Deprecated: substr(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/wp-content/plugins/wordpress-seo/inc/class-wpseo-utils.php on line 812
Przy WordPressie 5.5+ CF7 5.0.5 dostaje register_rest_route ... brakuje wymaganego argumentu permission_callback,
a przy 6.7+ Yoast 9.2 _load_textdomain_just_in_time ... Translation loading for the wordpress-seo domain was
triggered too early (notice, bez skutków dla gości).
Edytor bloków od WordPressa 5.6: przy Elementorze 2.3.4 w edytorze bloków znika przycisk powrotu do Elementora,
który w 5.0–5.5 był na pasku narzędzi. Edytor bloków pokazuje wtedy tekstową kopię strony jako
blok „Klasyczny”. Zmiany w niej nie wpływają na stronę zbudowaną w Elementorze, co myli właścicieli. Wejście do
Elementora nadal działa z paska administratora i listy stron. Błędu JS w konsoli nie było.
Wymagania PHP (stan na 2026-11, wp-includes/version.php i oficjalna tabela zgodności WordPressa): WP 4.9 obsługuje
PHP do 7.2, 5.0–5.2 do 7.3, 5.3–5.5 do 7.4, 5.6–5.8 do 8.0, 5.9–6.0 do 8.1, 6.1–6.3 do 8.2, 6.4–6.6 do 8.3,
6.7–6.8 do 8.4, 6.9–7.1 do 8.5. Minimum: 5.2.4 do WP 5.1, 5.6.20 od 5.2, 7.0 od 6.4 (6.3 w tabeli), 7.2.24 od 6.6,
7.4 od 7.0. Kokpit WordPressa 4.9.8 proponuje dziś aktualizację do 7.1.4 także na PHP 7.2 (API
version-check zwraca ofertę z php_version: 7.4). Wspólny zakres dla strony z 2018 (bez awarii do 7.4) i
WordPressa 7.x (od 7.4) to tylko PHP 7.4.33, bez wsparcia od 28 listopada 2022.
Ścieżka 3: nowy Elementor przy starym motywie i dodatku
Baza: WP 7.1.4 + PHP 7.4 (ścieżka 2 działała), Elementor z 2.3.4 podmieniony jak przy aktualizacji z kokpitu (stary
katalog usunięty, nowy rozpakowany, migracje danych Elementora).
| Elementor | Front | Edytor | Przyczyna |
| 2.9.14 | 200 | wczytuje się (1,8 s), okno „Note: Flexbox Changes”, zapis działa | błąd JS z Ocean Extra w konsoli, bez skutków |
| 3.0.16 | 200, zmiany odstępów (podstrony o 20–40 px niższe) | jak wyżej | jak wyżej |
| 3.5.6 | 200 | nie wczytuje się: „Your site doesn't have a default kit”; po „Odtwórz kit” jak 3.0.16 | brak kitu po aktualizacji |
| 3.6.8, 3.13.4, 3.35.9, 4.3.5 | 500 na stronie głównej i Ofercie | nie wczytuje się (błąd krytyczny w podglądzie) | EAEL 2.8.3 i usunięte Scheme_Typography |
| 4.3.5 na PHP 8.3 | jak wyżej | jak wyżej | jak wyżej |
Elementor 2.9, 3.0 i 3.5, edytor: przy otwarciu strony zbudowanej w 2.3 pojawia się okno „Note: Flexbox Changes.
Elementor 2.5 introduces key changes to the layout using CSS Flexbox. Your existing pages might have been affected,
please review your page before publishing.” i rzeczywiście podstrony są o 20–40 px niższe (zmiana odstępów kolumn).
W konsoli edytora jest TypeError: Cannot read properties of undefined (reading 'search') z inline skryptu Ocean Extra
1.4.28 (widżet „About Me”), wstrzykiwanego do każdej strony panelu:
$(document).ajaxSuccess(function(e, xhr, settings) {
var widget_id_base = 'ocean_about_me';
if ( settings.data.search( 'action=save-widget' ) != -1 && ... ) {
Globalny handler ajaxSuccess zakłada, że każde żądanie AJAX ma settings.data jako napis; nowszy Elementor wysyła
też żądania bez data. W naszym teście wyjątek nie zablokował zapisu: po zmianie nagłówka i kliknięciu „Aktualizuj”
save_builder zwracał success: true w 2.9.14, 3.0.16 i 3.5.6 (z kitem). Uwaga dla testujących automatem: okno o
Flexboxie zasłania przycisk zapisu, nasz pierwszy automatyczny przebieg zgłosił przez to fałszywy błąd zapisu.
Elementor 3.5.6, brak kitu: okno „Your site doesn't have a default kit. Seems like your kit was deleted, please
create new one or try restore it from trash.”, a przy 4.3.5 dodatkowo
{"code":"not-found","message":"Kit doesn't exist."} z /wp-json/elementor/v1/kit-elements-defaults (404). Od
Elementora 3.x ustawienia globalne mieszkają w dokumencie „kit”. W 3.0.16 Kits\Manager::get_active_id() tworzył go
sam, gdy go brakowało; w 3.5.6 tworzy go tylko hook aktywacji Maintenance::activation(). Aktualizacja z kokpitu nie
aktywuje wtyczki ponownie, więc przy skoku 2.x → 3.5+ kit nie powstaje. Naprawa: Elementor > Narzędzia > „Odtwórz
kit”. Po odtworzeniu kitu edytor 3.5.6 wczytał się w 1,8 s i zapisywał zmiany.
Elementor 3.6+ z EAEL 2.8.3:
PHP Fatal error: Uncaught Error: Class 'Elementor\Scheme_Typography' not found in /var/www/html/wp-content/plugins/essential-addons-for-elementor-lite/elements/fancy-text/fancy-text.php:287
Stack trace:
#0 /var/www/html/wp-content/plugins/elementor/includes/base/controls-stack.php(2280): Elementor\Widget_Eael_Fancy_Text->_register_controls()
#1 /var/www/html/wp-content/plugins/elementor/includes/base/controls-stack.php(494): Elementor\Controls_Stack->init_controls()
To samo dla contact-form-7/contact-form-7.php:455. Na PHP 8 komunikat ma cudzysłowy:
Class "Elementor\Scheme_Typography" not found. EAEL 2.8.3 rejestruje kontrolki typografii przez
Scheme_Typography::get_type(). Elementor 3.5 usunął stare schematy z danych (_v_3_5_0_remove_old_elementor_scheme),
3.6 usunął klasy. Widżet rejestruje kontrolki dopiero przy renderowaniu, więc padają tylko strony z widżetami EAEL,
które używają typografii (strona główna: fancy-text, Oferta: contact-form-7); „O nas” z innymi widżetami EAEL działa.
Ekran gościa: „W witrynie wystąpił krytyczny błąd.” z kodem 500.
Pełna aktualizacja wszystkiego (droga ratunkowa)
Z bazy WP 7.1.4 podmienione naraz: Elementor 4.3.5, EAEL 6.8.8, CF7 6.2.4.1, Yoast SEO 28.8, OceanWP 4.2.8, Ocean Extra
2.6.3 (stan na 2026-11), migracje danych Elementora przez wp elementor update db, potem test na PHP 8.3, 8.4 i 8.5.
| Wynik |
| Front | 7/7 adresów HTTP 200, 0 błędów JS; liczniki 15/450/98/6, karuzele zainicjowane (Swiper zamiast slick), zakładki, akordeon, EAEL 15/15 widżetów, galeria 8/8 |
| Formularz | REST mail_sent, e-mail w Mailpit |
| Log PHP (cały przebieg) | 8.3 i 8.4: 2 Notice (_load_textdomain_just_in_time dla wordpress-seo; Control type "nested-elements-repeater" not found); 8.5: dodatkowo 24 Deprecated z Yoasta (Using null as an array offset is deprecated, use an empty string instead in .../wordpress-seo/src/memoizers/presentation-memoizer.php on line 49) |
| Edytor przed odtworzeniem kitu | nie wczytuje się: „Your site doesn't have a default kit”, REST 404 Kit doesn't exist. |
| Edytor po odtworzeniu kitu | wczytuje się; trzy nakładki (Flexbox, reklama, podpowiedź Yoasta); po ich zamknięciu panel „Edit Nagłówek”, save_builder success |
| Wygląd | zmiany na każdej podstronie Elementora: inny układ boksu EAEL „Call to Action” (przycisk obok tekstu), niższa karuzela, inna typografia tekstu EAEL i kolory stopki OceanWP; wysokość strony głównej 3318 zamiast 3397 px; ikona fa fa-clock-o (nazwa z Font Awesome 4) bez glifu na stronie Kontakt |
CF7 6.2.4.1 deklaruje Requires PHP: 8.3, a wtyczki z 2018 nie działają w panelu na PHP 8: pełnej aktualizacji nie da
się zrobić „po kawałku” na jednej wersji PHP, tylko naraz albo w kolejności: WordPress na PHP 7.4, kopia, potem
wszystkie wtyczki i motyw razem ze zmianą PHP. Przy okazji: CF7 6.x ma ostrzejszą walidację numeru telefonu
(wpcf7_is_tel()); numer zaczynający się od „00” traktuje jako międzynarodowy i np. 000000000 odrzuca komunikatem
„Wprowadzony numer telefonu jest nieprawidłowy.”.
Co nie było oczywiste
- Strona pada w rdzeniu, nie we wtyczkach. Na PHP 8 zamrożona strona nie dochodzi do Elementora:
wp_magic_quotes() w wp-settings.php woła usuniętą get_magic_quotes_gpc(). Wyłączanie wtyczek przez zmianę
nazwy katalogu nic nie da; pomaga tylko aktualizacja rdzenia do 5.3 lub nowszego (wywołanie zniknęło z load.php w 5.3; 5.2.30 nadal je ma).
- Wydania bezpieczeństwa gałęzi 4.9 tego nie poprawiają. 4.9.35 na PHP 8.0 daje ten sam fatal. Kto liczy na
automatyczne poprawki, zostaje z tą samą białą stroną.
- Błąd zależny od cudzego serwera. Kokpit na PHP 8 pada przez odpowiedź
my.elementor.com, której format zmienił
się po latach. Ostrzeżenie było w logu nawet na PHP 5.6 i 7.2 przy niezmienionym kodzie strony; PHP 8 zamienił je
w TypeError. Bez dostępu do API (lub z zablokowanym hostem) ten sam kokpit działał. Front i edytor nie wołają tego
kodu, więc „strona działa”, a właściciel nie może wejść do panelu.
display_errors = On przesuwa granicę do PHP 7.3 i psuje logowanie. Ostrzeżenie kompilacji z
plural-forms.php (ładowane przy polskim tłumaczeniu) wychodzi przed nagłówkami: przeglądarka w trybie quirks, a
setcookie() nie działa, więc logowanie wraca na wp-login.php. Na PHP 8 ten sam wariant zwraca HTTP 200 z treścią
fatala i ścieżkami serwera zamiast 500.
- jQuery 3 i usunięcie jQuery Migrate nie zepsuły Elementora 2.3.4. WP 5.5 (bez Migrate) i 5.6 (jQuery 3.5.1)
przeszły bez błędu JS na froncie i w edytorze. Jedyna widoczna zmiana: od WP 5.6 w edytorze bloków znika przycisk
Elementora 2.3.4. Błąd JS z globalnego
ajaxSuccess Ocean Extra pojawia się dopiero przy nowszym Elementorze i w
teście nie blokował zapisu.
- Aktualizacja Elementora z kokpitu nie tworzy kitu. Przy skoku z 2.x do 3.5+ edytor zgłasza brak kitu, bo kit
tworzy tylko hook aktywacji; 3.0 jeszcze naprawiał to sam.
- Usunięta klasa zabija tylko część stron. EAEL 2.8.3 przy Elementorze 3.6+ wywala stronę główną i Ofertę, a „O nas”
z innymi widżetami EAEL działa. Test jednej podstrony po aktualizacji niczego nie dowodzi.
- Kopiowanie „tylko zmienionych plików” miesza wersje. Pakiety 5.2.30 i 5.3.27 (zbudowane 29.10.2026 23:02) mają
sześć plików o tej samej dacie i rozmiarze, ale innej treści, m.in.
wp-includes/version.php („5.2.30” i „5.3.27”
mają po 6 znaków). rsync w trybie szybkim zostawił stary version.php i wp core update-db uznał bazę za aktualną.
To samo zrobi klient FTP z opcją „pomiń pliki o tym samym rozmiarze”. W labie kopiujemy z sumami kontrolnymi.
Rekomendacja dla strony z 2018 roku
- Najpierw kopia i lab, nie produkcja. Każdy krok niżej sprawdzony na kopii tym samym zestawem kontroli.
- Bezpieczne na PHP 7.4: aktualizacja samego WordPressa, krok po kroku, do 7.1.x. W teście bez awarii frontu,
edytora i formularza, tylko wpisy w logu. To odracza problem, nie rozwiązuje go: PHP 7.4 nie ma wsparcia.
- Przed PHP 8: zaktualizować WordPress (usuwa fatal rdzenia), potem wymienić naraz Elementor, dodatek EAEL, motyw
i jego wtyczkę na wersje zgodne z PHP 8, odtworzyć kit (Elementor > Narzędzia), zamienić ikony Font Awesome 4 bez
odpowiednika, przejrzeć każdą podstronę (układ boksów EAEL, karuzela, stopka). W teście po tych krokach strona
działała na PHP 8.3, 8.4 i 8.5.
- Nie aktualizować samego Elementora przy dodatku i motywie z 2018. Jeśli dodatek nie ma wersji zgodnej z
nowym Elementorem, jego widżety trzeba zastąpić przed aktualizacją.
- Przebudowa zamiast aktualizacji, gdy motyw lub dodatek nie są już rozwijane, gdy strona używa wielu widżetów
dodatku albo gdy po pełnej aktualizacji większość podstron wymaga ręcznych poprawek.
- Na każdym hostingu:
display_errors = Off na produkcji i log błędów włączony.
Rezultaty
| Etykieta | Wartość |
| Przebiegi testu | 70 konfiguracji, każda: 7 adresów, panel, edytor, formularz, log PHP |
| Zamrożona strona działa na | PHP 5.6–7.4 (6 z 12 sprawdzonych wersji) |
| Pierwsze PHP z awarią | 8.0: HTTP 500 na 7 z 7 adresów, logowanie niedostępne |
Pierwsze PHP z awarią przy display_errors = On | 7.3: ostrzeżenie na stronie, rozjechany nagłówek, logowanie niemożliwe (7.2 czysto) |
| Aktualizacja samego WordPressa na PHP 7.4 | 19 wydań od 4.9 do 7.1.4 bez awarii frontu, edytora i formularza |
| Stary Elementor na PHP 8.0–8.5 z nowym WordPressem | front, edytor i formularz działają; kokpit, wtyczki i lista stron: błąd krytyczny w każdym z 17 przebiegów (WP 5.6–7.1) |
| Pierwsza wersja Elementora wyłączająca strony z dodatkiem z 2018 | 3.6.8 (2 z 7 adresów HTTP 500) |
| Pierwsza wersja Elementora, po której edytor się nie otwiera | 3.5.6 (brak kitu; naprawa: Odtwórz kit) |
| Pełna aktualizacja wszystkiego na PHP 8.3–8.5 | 7/7 adresów 200, formularz OK, 2 wpisy w logu (8.3), edytor po odtworzeniu kitu; zmiany wyglądu na każdej podstronie Elementora |
| Wspólne PHP dla wtyczek z 2018 i WordPressa 7.x | tylko 7.4, bez wsparcia od 2022-11 |
Wnioski
- Strona z 2018 roku na Elementorze ma twardą granicę: PHP 8.0. Wyznacza ją rdzeń WordPressa 4.9, nie Elementor.
- Aktualizacja samego WordPressa jest bezpieczniejsza, niż się wydaje, ale działa tylko na PHP 7.4.
- Najgroźniejsza jest aktualizacja jednej wtyczki w zestawie z 2018 roku: nowy Elementor ze starym dodatkiem wyłącza
strony, które z tego dodatku korzystają.
- Część błędów zależy od rzeczy spoza strony: odpowiedzi API producenta i ustawień hostingu. Dlatego decyzję
„aktualizować czy przebudować” warto oprzeć na teście kopii, a nie na liście wersji.