W tym artykule porównamy WordPress z mniej znanym i bardziej niszowym rozwiązaniem, jakim jest Craft CMS. Naszym celem jest zrozumienie, czy wybór Craft CMS może okazać się lepszy, a także dla kogo i dla jakich projektów. Zaczniemy od ogólnego przedstawienia obu rozwiązań.
Mimo upływu lat i dynamicznych zmian w internecie, WordPress zachowuje stabilną pozycję lidera na rynku systemów zarządzania treścią. Aktualnie WordPress stanowi fundament dla około 43% wszystkich stron internetowych na świecie i około 60% wszystkich witryn zbudowanych w oparciu o konkretny CMS. Pytanie z czego wynika taka popularność i czy oznacza ona najlepszy wybór?
Czym jest WordPress i co z tego wynika?
Pierwsza wersja WordPress (1.0) została wydana w 2003 roku, czyli w czasach, kiedy nie znano jeszcze pojęć “social media” i “smartfon”, a w sieci rozkwitała “blogosfera”. Posiadanie własnego bloga było wtedy modnym trendem, ale też zupełnie nowym sposobem na wyrażenie swoich myśli przed szeroką publicznością i podyskutowania o tym w komentarzach pod wpisem.
WordPress został stworzony jako narzędzie do takiej właśnie aktywności, czyli do prowadzenia bloga. To z kolei zdefiniowało i narzuciło schematy i konwencje: treść była skupiona wokół “stron” i “wpisów”, te ostatnie dawało się przypisywać do “kategorii”, a pod wpisami można było zamieszczać “komentarze”. Taki format treści określił też kształt bazy danych, nazwy i hierarchię szablonów używanych do wyświetlania tekstu itd.
Z czasem i kolejnymi wersjami WordPress był rozbudowywany o funkcjonalności zbliżające go bardziej do uniwersalnego “systemu zarządzania treścią”. Istotnym pod tym względem było wydanie w 2010 roku wersji 3.0, która wprowadziła możliwość tworzenia innych typów treści niż “strona” i “wpis” (tzw. “custom post types”), a także wersja 4.7 z 2016 roku, w której zintegrowano REST API.
Ze względu na swoją popularność i fakt, że znaczna część witryn korzysta z zewnętrznych motywów i wtyczek, WordPress musi zachować wsteczną zgodność. Po latach wyczerpały się też w zasadzie możliwości rozwoju platformy w takiej formie. Próbą modernizacji i ucieczki przed “wsteczną zgodnością” była wydana pod koniec 2018 roku wersja 5.0, wprowadzająca nowy edytor blokowy “Gutenberg”, który w uproszczeniu można określić jako “wbudowany page builder”. Układ strony tworzy się teraz z bloków treści o określonym typie (paragraf, nagłówek, media itd.). Sam edytor zbudowany jest w oparciu o bibliotekę React i oferuje możliwość tworzenia własnych typów bloków, ich układów, a ostatnio nawet edycji całej strony (“Site editor”).
Gutenberg został przyjęty chłodno, jednak platforma jest ciągle rozwijana i to edytor blokowy jest przyszłością WordPress. Mimo to dziś – po 20 latach od wydania pierwszej wersji, WordPress nadal jest “na pierwszy rzut oka” narzędziem blogowym: opiera się na tych samych konwencjach, używa tego samego schematu bazy danych, a w plikach źródłowych można znaleźć kod napisany kilkanaście lat temu.
Jednocześnie o WordPress można dziś powiedzieć na pewno, że jest to system, na którym da się zbudować niemal wszystko. Jest to zasługa aktywnej i licznej społeczności, nie tylko amatorskiej, także komercyjnej i profesjonalnej. Ekosystem ten dostarcza tysiące motywów, pluginów i ofert deweloperskich dopasowanych do dowolnych potrzeb. Dzięki temu WordPress może być docelowym wyborem dla projektów o dowolnej skali i budżecie, a działającą witrynę można na nim zbudować nawet nie posiadając żadnej wiedzy programistycznej.
Rozbudowany i tworzony od podstaw projekt oparty na WordPress może być wykonany profesjonalnie, działać sprawnie i wydajnie, ale wymaga to w mniejszym lub większym stopniu zmierzenia się ze wspomnianym “legacy”, jakie WordPress ze sobą niesie – ograniczeniami związanymi z pierwotną podstawą koncepcyjną, nieelastycznym schematem bazy danych, koniecznością używania pluginów do rozbudowy systemu o podstawowe funkcjonalności. I tu pojawiają się narzędzia takie jak Craft CMS.
Czym jest Craft CMS i co z tego wynika?
Podczas gdy WordPress zdobywał popularność jako platforma blogowa, Craft CMS pojawił się jako rozwiązanie, które od początku miało być zaawansowanym i elastycznym systemem zarządzania treścią (CMS). Jego pierwsza publiczna wersja została wydana w 2013 roku, jest to więc narzędzie o znacząco krótszej historii niż WordPress, a jednocześnie w pełni dojrzałe.
System jest zbudowany na solidnej bazie w postaci frameworka php o nazwie Yii i rozwijany przez firmę Pixel & Tonic oraz skupioną wokół projektu społeczność deweloperów – znacznie mniejszą w porównaniu z WordPressem. Również udział w rynku jest nieporównanie mniejszy i wynosi aktualnie poniżej 1% (co jednak – w porównaniu do WP – jest udziałem porównywalnym z bardziej znanymi CMS typu Drupal czy Joomla).
Pomimo niewielkiej popularności na rynku Craft CMS jest zwykle wymieniany w zestawieniach najlepszych alternatyw dla WordPress, a niedawno został wybrany przez W3C (World Wide Web Consortium) jako CMS dla nowej wersji witryny. Wśród firm używających systemu wymieniani są m.in.: Microsoft, Apple, Reddit, Adobe, BigCommerce, Netflix, Ikea, AT&T, McDonald’s, Dell.
Model treści w Craft CMS
Craft CMS jest tworzony jako narzędzie mające dawać maksymalną swobodę i elastyczność w organizowaniu i prezentowaniu treści. Mając na uwadze słowo “elastyczność” dochodzimy do pierwszej zasadniczej różnicy między Craft CMS i WordPress, czyli podejścia do modelu treści.
WordPress proponuje od początku swój model blogowy – przy pierwszej wizycie w panelu administracyjnym widzimy sekcje “Wpisy” i “Strony”. W takim podejściu treść powinna być dostosowana do narzuconego modelu. Craft przyjmuje tu podejście odwrotnie – wychodzimy od ustalenia jaka treść będzie prezentowana na witrynie i dopiero wokół tych założeń budowany jest model, który będzie najlepiej pasował do struktury treści (“content-first”). W nowej instalacji Craft nie znajdziemy więc żadnych sekcji czy modułów przeznaczonych do wprowadzania treści – zaczynamy od “czystej kartki” i cały model musi być zdefiniowany od podstaw. Craft CMS zapewnia tu wszystkie potrzebne narzędzia do konfiguracji typów treści, rodzajów i układów pól, powiązań między nimi i powiązań z widokami dla frontendu. Model treści można zbudować w całości w cms, bez konieczności pisania kodu.
Motywy (themes)
Podejście “czystej kartki” nie dotyczy tylko modelu treści, ale również warstwy prezentacyjnej. W Craft nie istnieje pojęcie “motywu” (theme), dlatego że system nie narzuca żadnej konkretnej struktury, hierarchii czy nazewnictwa szablonów do prezentacji treści.
Motywy WordPressa zostały pomyślane jako łatwy sposób do przygotowania lub zmiany wyglądu treści prezentowanych w założonym modelu. W Craft o wiele trudniej jest przygotować uniwersalny “motyw”, ponieważ Craft CMS nie przyjmuje z góry żadnego modelu treści ani nie wymusza żadnego konkretnego sposobu ich prezentacji. W efekcie takiego podejścia po instalacji Craft katalog publiczny jest pusty – frontend (w tradycyjnym, monolitycznym podejściu) musi być przygotowany od podstaw jako drzewko szablonów twig, mamy przy tym całkowitą dowolność w jego kształtowaniu.
Opisane wyżej podejście można oczywiście zastosować używając WordPressa i robimy to z powodzeniem, ale tu konieczne jest użycie dodatkowych pluginów, które uzupełniają brakujące funkcjonalności WordPressa, np.: ACF do łatwiejszej budowy modelu treści i/lub bloków Gutenberg, czy Timber udostępniający możliwość używania szablonów twig. Craft oferuje wszystkie te narzędzia out of the box i są one podstawą całego rozwiązania.
Doszliśmy do drugiej fundamentalnej różnicy między oboma systemami: Craft nie narzuca formy prezentacji treści – nie ma tu koncepcji “motywu”. Dla WordPressa motyw jest jedną z podstaw jego popularności, ponieważ motywy mogą być łatwo instalowane i dopasowane do potrzeb witryny, przy czym zwykle nie wymaga to umiejętności programistycznych.
Docelowe grono odbiorców
Z powyższego wynika trzecia podstawowa różnica między Craft CMS i WordPress: przy użyciu Craft o wiele trudniej jest zbudować witrynę nie mając żadnej wiedzy programistycznej. W przypadku WordPress, istnieją tysiące gotowych motywów i szablonów, które można zainstalować i używać, co sprawia, że niekoniecznie trzeba być ekspertem w programowaniu. W przypadku Craft nie znajdziemy w sieci repozytoriów czy sklepów z podobną ofertą. W Craft każdy element jest projektowany, kodowany i tworzony od podstaw.
W zasadzie od początku Craft CMS był pomyślany jako narzędzie skierowane bardziej dla programistów, ale dzięki temu zapewniające większą elastyczność i możliwości dowolnego dostosowania konfiguracji pod bardziej złożone i wymagające projekty.
O ile więc każdy może zainstalować motyw i nazwać się developerem WordPressa, deweloperzy Craft stoją przed nieporównanie większymi wymaganiami, co w efekcie wyklucza tu praktycznie rynek amatorski. Ma to w wielu przypadkach decydujący wpływ na jakość końcowego produktu.
Podejście do pluginów
Repozytorium WordPress zawiera aktualnie około 60 tysięcy darmowych pluginów. Wiele z nich to profesjonalne i płatne rozwiązania korporacyjne, ale znajdziemy też rozwiązania proste, w wielu przypadkach amatorskie.
Z faktu istnienia tak dużej ilości pluginów do WordPress można wyciągnąć kilka wniosków:
- WordPress w podstawowej wersji dostarcza tylko podstawowe funkcjonalności.
- Przypuszczalnie istnieje plugin do większości potrzebnych i brakujących funkcjonalności.
- Zbudowanie bardziej zaawansowanych rozwiązań z pewnością będzie wymagało użycia zewnętrznych pluginów lub kodowania od podstaw.
Tym samym nie jest niczym dziwnym, że po zajrzeniu do panelu administracyjnego jakiejś większej witryny zbudowanej na WordPress znajdujemy tam kilkanaście lub nawet kilkadziesiąt wtyczek.
Tak duże repozytorium pluginów do WordPress oznacza też pewne problemy i zagrożenia:
- Kod pluginów nie podlega ścisłej kontroli jakości, niektóre z nich mogą dostarczać źle zoptymalizowane rozwiązania, które obniżają wydajność całej witryny.
- Pluginy wymagają regularnej aktualizacji – nowe wersje dostarczają poprawki błędów lub usprawnienia zabezpieczeń; jeśli witryna opiera się na konglomeracie pluginów, z których każdy dostarcza jakiś fragment całości, to nie trudno o sytuację, gdy po którejś kolejnej aktualizacji jakiś plugin staje się niekompatybilny z innym – w efekcie awarii mogą ulec niektóre funkcjonalności lub cała witryna.
- Często zdarza się, że pluginy zostają porzucone przez ich autorów i nie są dalej rozwijane; z czasem prowadzi to do sytuacji podobnej jak wyżej, gdzie przestarzały plugin przestaje poprawnie działać z nowszymi wersjami WordPress i innych pluginów; obie te sytuacje będą wymagały wycofania i zaniechania aktualizacji, lub pomocy programisty.
- Bardziej zaawansowane pluginy często są płatne; zazwyczaj nie ma możliwości ich przetestowania przed zakupem, a licencję dla każdego z nich musimy kupować na stronie autora lub jednym z wielu repozytoriów sprzedających licencje.
Wydaje się, że Craft CMS rozwiązuje część opisanych wyżej problemów. Craft jest z założenia rozwiązaniem całościowym – dostarcza więcej wbudowanych możliwości i funkcjonalności niż WordPress. Żeby uzyskać w panelu WordPress funkcjonalność zbliżoną do bazowej funkcjonalności Craft niezbędne jest użycie co najmniej kilku pluginów. Pierwszy wniosek jest więc taki, że konieczność użycia dodatkowych pluginów w Craft jest o wiele mniejsza.
Podobnie jak WordPress, Craft posiada wbudowane oficjalne repozytorium pluginów. Ilość dostępnych w nim wtyczek jest znacznie mniejsza w porównaniu z ofertą WordPress nie tylko ze względu wspomnianego wyżej, ale też z innego podejścia do wtyczek: o wiele mniejsza społeczność skupia się raczej na ulepszaniu i rozwijaniu istniejących rozwiązań, zamiast tworzyć ich kolejne konkurujące ze sobą warianty.
Jeśli potrzebujemy jednak użycia dodatkowych pluginów, to centralne repozytorium Craft ma dwie dodatkowe zalety:
- każdą wtyczkę można zainstalować i przetestować na wersji deweloperskiej witryny przed dokonaniem zakupu;
- wszystkie płatności i odnawianie licencji odbywa się przez to repozytorium na podstawie posiadanego Craft ID, a nie na wielu stronach różnych dostawców, jak w przypadku WordPress.
Wadą o wiele mniejszego repozytorium pluginów jest to, że większe jest prawdopodobieństwo konieczności pisania potrzebnych funkcjonalności samemu. A tu stajemy przed o wiele większym skomplikowaniem technicznym i wymaganą znajomością frameworka Yii.
Bezpieczeństwo
Temat pluginów jest bezpośrednio związany z bezpieczeństwem strony.
WordPress jako najpopularniejsze rozwiązanie na rynku jest też największym celem ataków i prób przejęcia danych. Według zestawienia opublikowanego przez WP Clipboard w każdej minucie ma miejsce 90 tysięcy ataków na witryny oparte o WordPress, przy czym:
- podatność na ataki wzrasta jeśli witryna nie jest regularnie aktualizowana: 61% zainfekowanych witryn działa na przestarzałym kodzie;
- 51% podatności wynika z przestarzałego lub źle napisanego kodu pluginów, 37% ma swoje źródło w kodzie samego WP, a 11% w kodzie motywów.
Z powyższego wynika wniosek, że dla bezpieczeństwa witryny i jej danych niezbędne jest nie tylko wykonywanie regularnych aktualizacji (które mogą spowodować jej uszkodzenie, o czym wspominaliśmy wyżej), ale też posiadania dodatkowych narzędzi zwiększających poziom zabezpieczeń, monitorujących stan witryny i aktualność kodu, czy wykrywających włamania.
Bezpieczeństwo jest kluczowym czynnikiem rozwoju zarówno dla WordPress jak i Craft, ale warto wziąć pod uwagę kilka czynników, które wyróżniają Craft:
- Craft CMS ma o znacznie nowocześniejszą bazę kodu w porównaniu do WP, jest też oparty o duży framework Yii – pozwala to implementować do samego cms bardziej zaawansowane rozwiązania dotyczące zabezpieczeń.
- Bazowa instalacja Craft ma domyślnie włączone ścisłe ustawienia dotyczące bezpieczeństwa – wiele potencjalnych zagrożeń jest zminimalizowanych od samego początku.
- Craft CMS nie używa motywów i ma znacznie mniejszą i bardziej wyspecjalizowaną bazę pluginów – redukuje to pewną część zagrożeń wynikających z podatności lub przestarzałości zewnętrznego kodu.
- Wiele podstawowych funkcjonalności związanych z zabezpieczeniami w WordPress wymaga użycia dodatkowych pluginów – np. WordPress nie ma funkcjonalności blokowania dostępu po nieudanych próbach logowania.
- Nieporównanie mniejszy udział Craft na rynku CMS powoduje, że aplikacje zbudowane na Craft są wystawione na znacznie mniejszą ilość ataków.
Wydajność
WordPress nie ma najlepszej opinii jak chodzi o wydajność i szybkość działania zbudowanych na nim rozwiązań. Optymalizacja pod tym kątem staje się trudniejsza im bardziej skomplikowany i rozbudowany jest projekt. Zwykle potrzebne są też dodatkowe pluginy do rozwiązań cache i optymalizacji. Craft daje tu możliwość osiągnięcia lepszych wyników dzięki kilku kwestiom.
Struktura bazy danych
WordPress pozostaje tu ze swoim bagażem z przeszłości, czyli strukturą przygotowaną dla aplikacji blogowej: cała treść i związane z nią metadane trafiają do dwóch tabel (wp_posts i wp_postmeta). Przy większej witrynie tabele te mogą mieć miliony wierszy, łatwo jest znaleźć się w sytuacji, gdy bardziej skomplikowane zapytania do bazy zaczynają wyraźnie obniżać szybkość działania witryny.
Craft, jako rozwiązanie od początku projektowane dla elastyczności i wydajności, ma o wiele bardziej rozbudowaną strukturę bazy danych, np. każda sekcja treści dostaje własną tabelę, zapytania są zoptymalizowane pod kątem konkretnej treści.
Optymalizacja kodu
Craft CMS nie generuje domyślnie żadnego kodu frontendowego ani nie narzuca w tej kwestii żadnych schematów – developer ma pełną kontrolę i dowolność rozwiązań. W WordPress znaczna część optymalizacji polega na wyłączaniu lub modyfikowaniu rozwiązań dostarczanych przez system. Jeden z kilku możliwych przykładów: jeśli aplikacja nie używa edytora blokowego, musimy sami odłączać związany z nim css, który jest aplikowany do nagłówka strony.
Integracja
Craft ma tu znaczącą przewagę: kluczowe funkcjonalności CMS, które w WordPress muszą być dostarczane z zewnątrz (np. ACF), tutaj są częścią samego systemu, a więc z założenia są lepiej zintegrowane i zoptymalizowane jako całość, a fundamentem jest dojrzały framework Yii. Mniejsze zapotrzebowanie na pluginy i ich potencjalnie lepsza jakość daje w efekcie mniejszą szansę na wprowadzenie złej jakości kodu do projektu. Wreszcie – brak motywów i konieczność przygotowania frontendu od podstaw to pełna elastyczność i możliwość optymalizacji rozwiązania pod konkretne założenia projektu.
SEO
Żaden z porównywanych CMS nie oferuje wbudowanego i zaawansowanego systemu do SEO, który oferowałby analizę treści pod kątem słów kluczowych, generował podgląd widoczności w wyszukiwarkach i social mediach, generował kod z metadanymi czy mapę strony z indeksem dla wyszukiwarek – rozwiązania te muszą być dostarczone pluginem.
WordPress w połączeniu z wtyczką Yoast SEO jest wskazywany jako jedno z najlepszych rozwiązań SEO na rynku. Odpowiednikiem Yoast dla Craft jest plugin SEOmatic, niestety wtyczka nie jest darmowa i jej użycie oznacza aktualnie dodatkowy koszt około 100$. W repozytorium Craft można jednak znaleźć także rozwiązania darmowe, które mogą okazać się wystarczające.
Optymalizacja witryny pod kątem wyszukiwarek to nie tylko odpowiednio przygotowana treść strony i jej metadane, ale też wydajność i dostępność aplikacji, czyli parametry takie jak: czas do wyświetlenia treści, czas do pełnej interaktywności, wielkość danych do pobrania itd. Craft CMS oferuje tu potencjalnie większe i wymieniane już wyżej możliwości optymalizacji wydajności.
Cena
WordPress jest darmowym systemem open-source i takim pozostanie. Teoretycznie nawet złożoną witrynę można wykonać całkowicie bezkosztowo – tzn. bez korzystania z usług programistów, używając jednego z darmowych motywów i instalując potrzebne, darmowe pluginy. Koszty pojawiają się gdy jest potrzeba zakupu bardziej profesjonalnego motywu lub zaawansowanych wtyczek z komercyjną licencją – zwykle są to jednak koszty niewielkie, rzędu kilkudziesięciu-kilkuset dolarów.
Craft oferuje darmową wersję, ale jest ona ograniczona na tyle, że do bardziej złożonych projektów konieczne jest zakupienie licencji. Aktualnie wersja Pro systemu kosztuje około 300 dolarów, plus 60 dolarów za odnowienie licencji na każdy kolejny rok. Również znaczna część pluginów dostępnych w repozytorium jest płatna i zwykle są one wyraźnie droższe niż podobne rozwiązania dla WordPress. Wybór Craft w zdecydowanej większości projektów będzie też wymagał pomocy programistów, ponieważ wymaga znajomości kodu i w większości samodzielnego przygotowania konfiguracji i frontendu strony.
Jak chodzi o koszty WordPress przypuszczalnie okaże się rozwiązaniem tańszym we wdrożeniu i utrzymaniu.
Podsumowanie Craft CMS vs WordPress
Podsumowując, możemy sformułować najbardziej kluczowe różnice między oboma systemami, które mają decydujący wpływ na wybór rozwiązania:
- Uruchomienie witryny na Craft wymaga posiadania umiejętności programistycznych – frontend musimy przygotować sami, jest to CMS skierowany w znacznym stopniu do programistów.
- Rozwiązanie oparte o WordPress można zbudować w oparciu o gotowe motywy i pluginy, ale będzie się to wiązać z większą podatnością na ataki, słabszą optymalizacją i wydajnością. Craft ma tu przewagę optymalizacyjną, nie ma koncepcji “motywu”, oferuje mniejszą bazę pluginów – tym samym wymaga większego nakładu pracy programistów przy złożonych projektach.
- Oba systemy mogą być bazą do budowania projektu od podstaw przez zespół programistów, jednak Craft dostarcza więcej wbudowanych funkcjonalności, lepszą strukturę bazy danych, nieporównanie lepsze uporządkowanie i zoptymalizowanie bazowego kodu (framework Yii). WordPress na starcie wymaga użycia zewnętrznych rozwiązań do custom fields, widoków twig, obsługi wielojęzyczności itd., a także ciągnie za sobą wsteczną zgodność związaną z pozycją na rynku i byciem przede wszystkim platformą blogową.