Agencja webowa uruchamia bloga. Brzmi banalnie. Ale zanim napisaliśmy tutaj pierwszą literę, musieliśmy odpowiedzieć na pytanie, które każdemu powinno zadać się samo: na czym go postawimy?

Oczywista odpowiedź to WordPress. Znamy go, umiemy w nim pracować, klientów na nim stawiamy. Ale kiedy spojrzeliśmy na to, czego faktycznie potrzebujemy - i co i tak mieliśmy już zbudowane w naszym CMS - doszliśmy do wniosku, że WordPress byłoby krokiem w bok, nie do przodu. Postanowiliśmy napisać własny system. Ten wpis jest o tym, jak to wyglądało od środka.

Co chcieliśmy osiągnąć

Zanim powstała pierwsza linia kodu, spisaliśmy wymagania. Nie listwę życzeń - konkretne warunki, które system musi spełnić, żeby mieć sens.

Po pierwsze: SEO gotowe od pierwszego dnia. Nie chcieliśmy instalować wtyczki Yoast, potem jej konkurenta, potem czegoś do sitemap, a potem odkrywać, że jedna z wtyczek konfliktuje z inną. Schema markup, Open Graph, Twitter Card, sitemap XML - to wszystko musiało być wbudowane, nie doklejone.

Po drugie: edytor, który nie wymaga pomocy technicznej. Osoby piszące wpisy nie są programistami. Jeśli edycja posta wymaga wejścia w kod albo instalowania kolejnego rozszerzenia, to coś poszło nie tak już na etapie projektu.

Po trzecie: bezpieczeństwo bez outsourcowania go do wtyczek. WordPress ma dobre mechanizmy bezpieczeństwa w rdzeniu. Problem zaczyna się, gdy do rdzenia dodajesz dwadzieścia wtyczek różnych autorów. Każda z nich to potencjalny wektor ataku, każda ma własny cykl aktualizacji, i nie zawsze te cykle pokrywają się z momentem, gdy pojawia się luka.

Po czwarte: integracja z resztą systemu. Mamy już w CMS bibliotekę mediów, ustawienia SEO, przekierowania, zarządzanie użytkownikami. Blog powinien korzystać z tego samego zaplecza, a nie być osobną wyspą z osobnym logowaniem i osobną bazą mediów.

!

Kontekst

Nie piszemy tego żeby zniechęcić kogoś do WordPressa. Piszemy to żeby wyjaśnić, dlaczego dla nas - dla naszego konkretnego systemu i naszej konkretnej sytuacji - własne rozwiązanie miało więcej sensu niż gotowe.

Jak wygląda edytor od środka

Edytor jest oparty na Quill - bibliotece, która daje solidną bazę do formatowania tekstu, a jednocześnie pozwala ją rozszerzać bez pisania wszystkiego od zera. Do standardowych opcji (nagłówki, pogrubienie, lista, linki) dopisaliśmy kilka elementów, których brakowało nam w każdym gotowym rozwiązaniu.

Callout boxes - kolorowe ramki z etykietą, które widzą Państwo powyżej. Użyteczne do wyróżniania ważnych informacji, ostrzeżeń albo dodatkowego kontekstu. Wstawia się je jednym kliknięciem, bez wchodzenia w HTML.

Text highlight - wyróżnienie bloku tekstu tłem, używane gdy chcemy podkreślić konkretne zdanie lub cytat. Również jeden klik.

Wklejanie HTML - dla momentów, gdy potrzebujemy czegoś, czego edytor nie przewiduje. Nie jest to funkcja codziennego użytku, ale jest dostępna.

Oprócz edytora sam panel obsługuje też historię wersji. Każda zapisana wersja wpisu jest przechowywana, można wrócić do poprzedniej jeśli coś poszło nie tak. To funkcja, która rzadko się używa - aż do momentu, gdy jest potrzebna.

Filozofia, która nam przyświecała przy projekcie edytora: piszący powinien myśleć o treści, nie o narzędziu. Jeśli interfejs przyciąga uwagę do siebie, to znaczy, że jest źle zaprojektowany.

Każdy wpis ma też zajawkę - krótki tekst, który pojawia się na listingu i jako podtytuł na stronie wpisu. Autor wpisuje ją ręcznie, co daje pełną kontrolę nad tym, jak post prezentuje się w wynikach wyszukiwania i w mediach społecznościowych. To samo pole jest używane jako description dla Open Graph i Twitter Card.

SEO wbudowane, nie doklejone

Każdy post generuje automatycznie kilka rzeczy, o których większość systemów zapomina albo pozostawia jako "do skonfigurowania po zainstalowaniu wtyczki".

Schema markup BlogPosting w JSON-LD - generowany automatycznie na podstawie danych wpisu: tytuł, opis, autor, data publikacji, data modyfikacji, obrazek. Google może te dane odczytać i wyświetlić w wynikach wyszukiwania jako rich snippet.

Czas czytania - liczony automatycznie na podstawie długości treści, około 200 słów na minutę. Pojawia się przy każdym poście, bez ręcznego wpisywania.

Licznik wyświetleń - każde wyświetlenie strony jest rejestrowane. Przydatne do analizy, które treści działają, a które nie.

Sitemap XML - blogi są uwzględniane automatycznie z priorytetem 0.6. Dodanie nowego wpisu = automatyczna aktualizacja sitemapy. Nie trzeba o tym pamiętać.

OG tags i Twitter Card - generowane na podstawie tytułu, zajawki i obrazka featuredowego. Dzięki temu udostępnienie wpisu na X czy LinkedIn wygląda porządnie bez żadnej dodatkowej pracy.

Strona listingu ma wyróżniany pierwszy post w formacie hero oraz filtrowanie po kategoriach. Kategorie mają przypisane kolory i ikony, co ułatwia nawigację wizualnie. Strona pojedynczego wpisu ma sidebar z losowym powiązanym postem i przyciskami do udostępniania (X, LinkedIn, kopiowanie linku).

Nie mieliśmy potrzeby budowania dark mode dla klientów na co dzień, ale system go obsługuje - wpisy renderują się poprawnie zarówno w trybie jasnym, jak i ciemnym.

Co planujemy dalej

Kilka rzeczy jest już zaplanowanych, ale nie chcemy obiecywać terminów, których nie jesteśmy pewni.

Najbardziej brakuje nam teraz treści - nie funkcji. System jest gotowy do produkcji. To, co się liczy w SEO, to regularność i jakość tekstów, a nie architektura pod spodem. Więc priorytetem na najbliższe tygodnie jest pisanie, nie kodowanie.

Mamy na liście też lepsze raportowanie dla autorów - podsumowanie statystyk wpisów w jednym miejscu, zamiast sprawdzania każdego z osobna. To nie jest skomplikowane technicznie, ale nie jest też palące.

Funkcja, która może pojawić się później, to komentarze - ale bez pośpiechu. Komentarze wymagają moderacji, a moderacja wymaga czasu. Nie będziemy jej wprowadzać tylko po to, żeby ją wprowadzić.

Podsumowanie

Zbudowanie własnego systemu blogowego zamiast użycia WordPressa miało swoją cenę - czas projektowania i implementacji. Miało też swoje korzyści: pełną kontrolę, zero zależności od zewnętrznych wtyczek, integrację z resztą CMS i bezpieczeństwo, o które nie musimy się martwić przy każdej aktualizacji.

Nie twierdzimy, że to jedyna słuszna droga. Dla większości firm WordPress albo inne gotowe rozwiązanie będzie rozsądnym wyborem. Dla nas, przy naszym modelu i naszym systemie, własny blog był logiczną konsekwencją tego, co już zbudowaliśmy.

Jeśli chcesz zobaczyć kolejne wpisy z tej serii albo artykuły o stronach internetowych dla firm - zapraszamy na listing bloga. Staramy się pisać konkretnie i bez zapychania słowami kluczowymi.