Klient wrócił po trzech latach
W sierpniu 2023 zrobiliśmy dla G-PRO ECO ENERGY z Kalisza stronę firmową na WordPressie z Oxygen Builderem. Firma zajmuje się fotowoltaiką, pompami ciepła, magazynami energii, klimatyzacją i monitoringiem - działa w Kaliszu i w promieniu stu kilometrów.
We wrześniu 2026 przyszedł mail: „zakładka dachy itp". Klient wszedł w nową usługę - dekarstwo - i potrzebował dla niej podstrony. W załączniku gotowa treść i dwadzieścia jeden zdjęć.
Zakładkę zrobiliśmy tego samego dnia. Przy okazji zajrzeliśmy pod maskę i okazało się, że sensowniej jest przebudować całość niż dokładać kolejne piętro do konstrukcji sprzed trzech lat. Klient się zgodził w tej samej rozmowie.
Co zastaliśmy
Strona działała, zbierała zapytania i nie było w niej niczego dramatycznego. Problem polegał na tym, z ilu ruchomych części się składała.
Piętnaście aktywnych wtyczek. Trzy od formularzy - Contact Form 7, weForms i formularz z page buildera. Dwie od SEO i analityki - Yoast i Site Kit. Do tego osobna wtyczka na baner cookies, osobna na obsługę plików SVG, osobna na tryb konserwacji i page builder, który trzymał w bazie własny format zapisu każdej podstrony.
Efekt: jedenaście arkuszy stylów, dwadzieścia pięć skryptów i osiem zewnętrznych domen odpytywanych przy każdym wejściu na stronę.
Był też problem, którego nie widać w żadnym audycie. Konto administratora klienta miało obcięte uprawnienia przez page buildera. Oxygen ma funkcję Client Control - ogranicza panel, żeby klient nie popsuł layoutu. Skutek uboczny: właściciel firmy nie mógł zainstalować wtyczki, wejść w menu ani dodać pozycji do nawigacji na własnej stronie.
15 aktywnych wtyczek, w tym trzy od formularzy i dwie od SEO
11 arkuszy stylów i 25 skryptów na stronie głównej
8 zewnętrznych domen odpytywanych przy wczytywaniu
Układ podstron zapisany w formacie page buildera
Konto klienta bez prawa do wtyczek i menu
Treść usług rozsypana po zwykłych podstronach
5 wtyczek - kopie zapasowe, bezpieczeństwo i biblioteka mediów
2 arkusze stylów i 3 skrypty
Zero zapytań do zewnętrznych serwerów - font hostowany lokalnie
Autorski motyw, układ w szablonach PHP
Klient zarządza całą treścią z panelu
Usługi jako osobny typ treści - dodanie jednej zasila całą stronę
Formularze, SEO i cookies wjechały do motywu
Zamiast pięciu wtyczek robiących pięć rzeczy - pięć modułów w motywie.
Formularz kontaktowy napisany od zera. Wysyłka bez przeładowania strony, z działającym zapasem dla przeglądarek bez JavaScriptu. Antyspam bez captchy, która irytuje klientów: ukryte pole-pułapka, pomiar czasu wypełniania i limit zgłoszeń z jednego adresu. Lista tematów w formularzu buduje się z listy usług, więc nie trzeba jej nigdzie duplikować.
Metadane i dane strukturalne generuje moduł motywu. Jeden spójny graf JSON-LD zamiast kilku osobnych bloków: firma jako LocalBusiness z zasięgiem stu kilometrów opisanym jako okrąg geograficzny, katalog usług budowany automatycznie z treści, okruszki, FAQ i nawigacja podpowiadająca wyszukiwarce, które podstrony są najważniejsze.
Zgody na cookies to własny baner z Google Consent Mode v2. Domyślnie wszystko odrzucone - dopóki użytkownik nie kliknie, żadne narzędzie nie zapisze cookies. Zapisana zgoda odtwarza się natychmiast po wejściu, zanim kontener tagów zdąży cokolwiek wysłać.
PHP 8.3
Autorski motyw
Czysty CSS ze zmiennymi
BEM
JavaScript ES6+
ACF Pro
Schema.org JSON-LD
Google Consent Mode v2
Google Tag Manager
llms.txt
Chrome DevTools Protocol
Problem z uprawnieniami rozwiązany bez proszenia o dostęp
Wdrożenie zaczynaliśmy mając tylko konto klienta - to okrojone przez page buildera. Można było wgrać motyw, ale nie można było zainstalować wtyczki ani ruszyć menu.
Zamiast czekać na hasła do serwera, zbudowaliśmy motyw tak, żeby ich nie potrzebował.
ACF wjechał do środka motywu
Advanced Custom Fields Pro ma oficjalnie wspierany tryb dołączania do motywu jako biblioteka. Wgranie motywu instaluje więc komplet - bez osobnej instalacji wtyczki. Przy okazji klient nie wyłączy przypadkiem czegoś, od czego zależy treść całej strony
Nawigacja, która buduje się sama
Skoro nie było prawa do edycji menu, motyw generuje je z tego, co jest w bazie: rozwijana oferta z listą usług, dalej strony rozpoznawane po adresie. Dodanie usługi w panelu dokłada ją do menu, do stopki, do kafelków na stronie głównej i do danych strukturalnych naraz
Instalator treści w panelu
Migracja treści działa i z wiersza poleceń, i przyciskiem w ustawieniach motywu - na wypadek serwera bez dostępu powłoki. Skrypt rozpoznaje wpisy po adresie, więc kolejne uruchomienie aktualizuje treść zamiast tworzyć duplikaty
Page builder wyłączony z poziomu motywu
Oxygen podmienia szablon niezależnie od tego, który motyw jest włączony - samo przełączenie nie wystarcza. Moduł motywu przywraca normalną hierarchię szablonów WordPressa i zdejmuje zasoby wtyczki, dzięki czemu przejście było natychmiastowe
Treść klienta została, zmieniła się struktura
Nie przepisywaliśmy tekstów. Opis firmy, zakresy usług, lista miejscowości - wszystko to jest treść klienta i jego wiedza o własnym rynku. Zmieniliśmy sposób, w jaki jest podana.
Największa zmiana dotyczy miejscowości. W starej wersji siedziały w ośmiu akapitach pod rząd, w środku opisu firmy. Rozbiliśmy je na grupy według usług - osobno miasta dla fotowoltaiki, osobno dla pomp ciepła, osobno dla magazynów energii. Powiązanie usługi z miastem ma wartość dla wyszukiwarki, płaska lista trzydziestu nazw nie ma.
Przenieśliśmy komplet: osiem usług, czterdzieści cztery realizacje i wszystkie zdjęcia z biblioteki mediów. Stare adresy dostały przekierowania 301, żeby nie stracić pozycji wypracowanych przez trzy lata.
Nowa usługa dostała najwięcej uwagi
Dachy to dla klienta wejście w nową branżę i usługa z najwyższą marżą, więc jej podstrona jest najbardziej rozbudowana: galeria realizacji układana kafelkowo, pięć kroków współpracy od telefonu do odbioru i sześć pytań, które klienci zadają najczęściej - łącznie z tym najważniejszym, czyli czy montaż paneli nie zepsuje gwarancji na dach.
To zresztą sedno oferty G-PRO po rozszerzeniu: jeden wykonawca dachu i fotowoltaiki oznacza jedną odpowiedzialność, bez sporu o to, czyja jest wina przy przecieku.
Mierzone, nie zakładane
Widok mobilny sprawdzaliśmy przez protokół debugowania przeglądarki, z prawdziwą emulacją urządzenia. Powód jest prozaiczny: przeglądarka uruchamiana w trybie bez okna wymusza minimum pięciuset pikseli szerokości, więc zrzut podpisany „390 px" jest w rzeczywistości renderem z pięciuset przyciętym do trzystu dziewięćdziesięciu. Reguły stylów zachowują się przy tym inaczej niż na telefonie i taki test niczego nie dowodzi.
Narzędzie mierzy przy okazji szerokość dokumentu i wskazuje element, który wychodzi poza krawędź. Na każdej podstronie wynik jest ten sam: dokument 390 px, zero poziomego przewijania.
Tą samą drogą znaleźliśmy błąd menu mobilnego, którego nie widać w kodzie. Nagłówek miał rozmycie tła, a ta właściwość tworzy nowy blok zawierający dla elementów pozycjonowanych na sztywno. Menu ustawiało się więc względem nagłówka o wysokości 78 pikseli zamiast względem ekranu - otwierało się jako pasek o wysokości 33 pikseli, a po przewinięciu strony w ogóle poza widokiem.
Rezultaty
Co dalej
Kolejnym etapem jest zaawansowany kalkulator wyceny fotowoltaiki i dachów - narzędzie, które policzy zakres i orientacyjny koszt jeszcze przed telefonem. Klient zdecydował się na rozwiązanie dedykowane, pisane pod jego sposób pracy, a nie na gotową wtyczkę.
I to jest właściwie odpowiedź na pytanie, czym zajmuje się KamikStudio. Nie składaniem stron z klocków, tylko budowaniem narzędzi, które pasują do konkretnej firmy. Czasem to strona, czasem system do grafików, a czasem kalkulator, którego nie ma w żadnym katalogu wtyczek.