Data
12.04.2022
W naszej agencji interaktywnej bardzo często realizujemy dla naszych Klientów projekty stron internetowych. Od tych prostszych typu one-page, Landing Page po rozbudowane strony firmowe aż po sklepy internetowe lub portale. Każdy projekt ma swoją specyfikę, wytyczne, postawione cele, a także ustalone funkcjonalności. Dlatego też, czasami w naszych projektach WWW, wykorzystujemy gotowe szablony. I czasem, jak to w życiu bywa, pojawia się niespodziewany problem….
W świecie projektów internetowych, problemem tym może być serwer, sama jakość szablonu oraz jego plików, czy nawet wykorzystywane wtyczki.
Problem, który dzisiaj chcemy rozwiązać, a przynajmniej wskazać drogę do jego rozwiązania, łączy wszystkie 3 składowe.
Case Study: WordPress + Avada (demo – Mechanic Website) + wtyczka Sierotki.
Problem:
po włączeniu wtyczki Sierotki, na stronie pojawiało się ostrzeżenie:
Warning: preg_replace(): Compilation failed: regular expression is too large at offset XXX
in /wp-content/plugins/sierotki/includes/iworks/class-iworks-orphan.php on line 216
które uniemożliwiało wyświetlanie menu.
Przyczyną błędu, jak wskazuje powyższy komunikat, było generowanie tak dużo kodu inline (dotyczącego właśnie menu), że przekraczał on dopuszczalną wielkości parametrów wchodzących do wyrażenia regularnego preg_replace().
Zwiększenie rozmiaru wyrażenia regularnego (sugerowanego na Stack Overflow)) z uwagi na posiadany przez Klienta serwer, również nie wchodziło w grę.
Rozwiązanie:
– wykluczenie kodu menu generowanego przez szablon AVADA ze sprawdzania przez wtyczkę Sierotki;
Konkretnie:
– w pliku header.php szablonu Avada, dodanie zapisków:
- przed menu:
add_filter('orphan_skip_replacement', '__return_true' );
- po menu:
remove_filter('orphan_skip_replacement', '__return_true');
Całość zatem powinna wyglądać tak:
Podsumowanie:
W powyższym rozwiązaniu, menu strony nie jest sprawdzane przez wtyczkę Sierotki.
Nie powinno to stanowić problemu, gdyż rzadko kiedy w tym elemencie mamy dotyczenia właśnie z jakimiś sierotkami, które trzeba przenieść do kolejnej linii tekstu.
Rozwiązanie to można stosować adekwatnie do innych elementów na stronie WWW, które generują za dużo kodu inline i które (dla poprawności działania reszty strony z wtyczką Sierotki) po prostu należy wykluczyć ze sprawdzania przez wtyczkę.
W razie dodatkowych pytań, piszcie śmiało na biuro@adencja.pl