Kolejna wtyczka do Wordpress’a
Wordpress jako CMS ma dużo zalet. Jedną z nich jest możliwość łatwego rozszerzania jego funkcjonalności poprzez dodawanie nowych wtyczek. Dzisiaj chciałbym porozmawiać o tym czy i kiedy warto dodawać kolejną wtyczkę do Wordpressa.

Z tego artykułu dowiesz się:
Co to są Hooki w Wordpress i jakie są ich rodzaje?
Jaki jest największy problem z wtyczkami do Wordpressa?
Czy podejście LowCode / NoCode w Wordpress ma sens?
Ile wtyczek można zainstalować, aby strona nadal była szybka?
Wordpress jako CMS ma swoich zagorzałych fanów, jak i zaciekłych wrogów. Osobiście pracowałem z nim przez kilka lat i mam wyrobioną opinię na jego temat. Zgadzam się, że za jego pomocą w dość krótkim czasie można wykonać praktycznie każdy rodzaj projektu - począwszy od strony wizytówki poprzez ecommerce, a kończąc na API. Z perspektywy użytkownika ma super przyjazny interfejs, jest banalnie łatwy w instalacji, konfiguracji i zarządzaniu, a społeczność jest ogromna i aktywna.
Ale to nie są powody dla których Wordpress jest dziś tak popularny. Sukces Wordpress’a kryje się za jego elastycznością. Można powiedzieć, że jego rozszerzanie jest banalnie proste. Co mam na myśli? Wtyczki? I tak, i nie - trzeba zajrzeć głębiej.
Hooks
Aby dobrze zrozumieć co stoi za sukcesem Wordpress’a trzeba spojrzeć na mechanizmy nim rządzące. Najważniejszym z nich jest mechanizm hook’ów. Hooki to miejsca w kodzie, które pozwalają programistom „wczepić się” w dowolny fragment systemu bez konieczności edycji plików samego Wordpress’a.
Warto pamiętać, że jakiekolwiek prace w plikach core’owych jakiejkolwiek aplikacji, powinny być wykonywane tylko w szczególnych i dobrze uzasadnionych przypadkach. Wprowadzanie zmian w głównej części systemu blokuje nam dostęp do jego późniejszych aktualizacji, ponieważ każda nowa aktualizacja może usunąć nasze poprzednie zmiany. Najważniejsze jest jednak to, że wprowadzone zmiany mogą spowodować luki w zabezpieczeniach systemu i w jego spójności.
Ten mechanizm daje dużą swobodę programistom, którzy tworzą systemy bazując na Wordpress’ie. Nie muszą się oni martwić o integralność całego systemu i jego zabezpieczeń. Kolejne wydania wersji i łatek można bezproblemowo zainstalować (Ważne, backup zawsze jest konieczny przy pracach takich jak aktualizacja systemu, w szczególności backup bazy danych).
W Wordpress’ie mamy dwa rodzaje hook’ów: filtry i akcje.
Filtry i akcje
Filtry służą do modyfikacji istniejących w systemie funkcji. Możemy ich użyć, jeśli chcemy zmienić działanie funkcji poprzez dodanie do niej jakiejś funkcjonalności. Przykładowo do części zwanej excerpt (wypis) chcemy dodać wielokropek.
W powyższym kodzie tworzymy funkcję modyfikującą nasz wypis i „wczepiamy” ją do wbudowanej funkcji, która go następnie zwraca.
Akcje, w przeciwieństwie do filtrów, służą do wykonywania w określonym przez nas momencie wczytywania kodu źródłowego Wordpressa naszych funkcji. Akcje nie muszą przyjmować parametrów, nie muszą też nic zwracać. Mogą być przydatne, gdy chcemy rozszerzyć dane funkcjonalności.
W powyższym przykładzie funkcja my_custom_script
wywoła się w momencie, gdy Wordpress będzie przygotowywał style i skrypty dla szablonu.
Wtyczki
Te dwie proste funkcjonalności spowodowały, że rozszerzania funkcjonalności Wordpressa stało się banalne. W maju 2004 roku wraz z wydaniem wersji 1.2 do Wordpress’a dodano architekturę pluginów (wtyczek), która pozwoliła zarówno użytkownikom, jak i programistom pisać, dodawać i udostępniać własne rozszerzenia do Wordpressa. Można powiedzieć, że szach - mat na rynku open source’owych systemów blogowych. Z czasem okazało się, że system wtyczek, a także architektura hook’ów zmieniły postrzeganie prostego systemu blogowego jako coś większego.
Problem z wtyczkami
Wtyczki w Wordpress mają swoje wady. Wtyczka to nic innego jak fragment kodu, który ma wykonywać jakieś zadanie w ramach naszego systemu. Tak sformułowaną definicja nie ma większych ograniczeń - i w zasadzie tak to wygląda w rzeczywistości. Jakości kodu pluginów nikt nie kontroluje. Wordpress daje pełną dowolność w tym zakresie - zgodnie zresztą ze swoimi ideałami. Odpowiedzialność za instalację i używanie wtyczek jest po stronie właściciela witryny. A co jeśli właściciel nie umie czytać kodu? No cóż... W zasadzie źle nazwałem ten akapit. Problem wtyczek to problem użytkowników. Osoba, która instaluje nową wtyczkę bierze na siebie odpowiedzialność za stabilność systemu, jego bezpieczeństwo i szybkość działania. To sprowadza nas do prostego wniosku - lepiej znaleźć zaufanego programistę niż robić to samodzielnie.
Historia Stephanie Wells i jej wtyczki Display Widgets, doskonale to opisuje. Autorka bardzo popularnej darmowej wtyczki sprzedała ją innemu deweloperowi. Jej wersja była w porządku. Po jakimś czasie okazało się, że wtyczka dostała nowe aktualizacje, które pobierają nieznane dane z obcego serwera i wysyła ze strony, na której była zainstalowana niektóre dane (przede wszystkim statystyczne) na zewnętrzne serwery. Łatwo się domyślić, że takie nieautoryzowane dane mogą być złośliwe i raczej nie służą niczemu dobremu, a już zdecydowanie nie chcemy mieć ich na swoim serwerze.
A ilość?
Czy ilość wtyczek może mieć wpływ na szybkość działania strony? Może, ale nie musi. Nie zawsze jest tak, że wtyczki mają bezpośrednie przełożenie na to, jak szybko działa strona na WP. Wordpress działa po stronie serwera, więc wiele problemów wydajnościowych związanych z samym CMSem możemy spokojnie rozwiązać zwiększając dostępny RAM i taktowanie procesora. Ponadto te wtyczki, które muszą wykonać operacje tylko po stronie serwera będą miały mniejszy wpływ na szybkość renderowania witryny.
Mamy kilka rodzajów wtyczek. Pluginy możemy podzielić ze względu na obszar aplikacji, której dotykają. W zależności od tego obszaru mają większy lub mniejszy wpływ na szybkość działania strony.
Wtyczki backendowe
Do tej grupy możemy zaliczyć wszystkie wtyczki, które wykonują operacje tylko po stronie serwera. Mogą do nich należeć wszelkiego rodzaju wtyczki do wykonywania backup’ów, przenoszenia danych, zmieniające edytory treści w panelu. Nie będą one miały wpływu na to, jak szybko renderuje się nasza strona. Ewentualne spowolnienia możemy rozwiązać poprzez maksymalizowanie zasobów serwera.
Wtyczki frontendowe
W opozycji do wtyczek backendowych są wtyczki frontendowe. Mają one duży wpływ na szybkość strony, ponieważ to od nich zależy to, co ma zostać wyświetlone odbiorcy końcowemu. Przykładem pluginów z tej grupy mogą być: slajdery, formularze kontaktowe i page buildery.
Tego typu wtyczki spowalniają stronę poprzez wykonywanie dodatkowych zapytań HTTP, dużą ilość zapytań do bazy danych (często niezoptymalizowanych) czy uruchamianie dodatkowych procesów w tle i dodatkowe zapisy do bazy. Spory wpływ mają również ogromne ilości css’a i js’a, które są dodawane w niekontrolowany sposób do kodu źródłowego naszej strony. Niejednokrotnie można się spotkać z ładowanymi z lokalnych zasobów bibliotekami, które są praktycznie niewykorzystywane, a jednak swoje ważą.
Wtyczki dwóch obszarów
Te wtyczki działają wszędzie. Są to wtyczki, które mają wpływ zarówno na serwer, panel administratora, jak i samą witrynę. W tej grupie znajdziemy firewalle czy pluginy do SEO.
Agencje reklamowe
Nie chciałbym wrzucać wszystkich do jednego worka, ale od kilku lat widzę trend tworzenia stron internetowych przez agencje, które nie mają za dużo wspólnego z profesjonalnym programowaniem. Strony i sklepy, które tworzą są często "wyklikiwane" przez page buildery i generatory. I pewnie nie byłoby w tym nic złego, gdyby agencje informowały swoich klientów co zamierzają zrobić i jakie to może mieć konsekwencje w przyszłości. Nurt LowCode / NoCode w przypadku Wordpress’a jest dość silny i bardzo dobrze. Oby nie zabrakło w całym procesie szczerości i odwagi w mówieniu klientom, że podczas tworzenia strony nie zostanie napisana ani jedna linijka kodu, a całość może mieć problemy wydajnościowe. Natomiast poprawa i optymalizacja witryny / aplikacji może być droższa niż samo jej wyprodukowanie. I nie … wtyczka do cache’a nie jest rozwiązaniem problemu, a jego zasypaniem.
Podsumowanie
Kolejna wtyczka do Wordpress’a? Jak najbardziej, ale ze świadomością jak duży wpływ może mieć na stabilność, bezpieczeństwo i szybkość. Wordpress daje nam wolność jego użytkowania, ale nie gwarantuje, że nieodpowiedzialne zachowanie, zawsze skończy się dobrze.
Co myślę o wtyczkach? Myślę, że często nie warto instalować czegoś z niepewnego źródła, nawet jeśli tysiące ludzi tego używają. Masy nie zawsze mają rację. Preferuję samodzielnie rozszerzać szablony i tworzyć własne proste wtyczki, które wykonują dokładnie to, do czego powstały. Ilość wtyczek może nie mieć znaczenia w przypadku szybkości, ale może mieć ogromny. Wszystko zależy od ich jakości i obszaru, którego dotykają.
Komentarze (1)
topdomena24h_pl
14 lipca 2023 o 12:44Jako osoba z doświadczeniem, mogę potwierdzić, że ilość wtyczek może wpływać na szybkość strony. Wtyczki backendowe mają mniejszy wpływ, natomiast wtyczki frontendowe mogą spowolnić stronę poprzez dodatkowe zapytania HTTP, zbyt dużą ilość CSS i JS oraz nieoptymalne zapytania do bazy danych. Warto również uważać na wtyczki, które działają w różnych obszarach. W przypadku wyboru wtyczek, należy być ostrożnym i wybierać tylko te niezbędne. Optymalizacja strony i dbanie o wydajność są kluczowe dla pozytywnego doświadczenia użytkowników.