DDD WIKI
Serwis warszawskiej firmy DDD postawiony od zera po awarii, w której z trzydziestu trzech adresów działał jeden. Pięćdziesiąt trzy podstrony, autorski motyw bez ani jednej klasycznej wtyczki i własna mapa witryny — wszystko w pięć dni.
Wyzwanie
Serwis trafił do nas w stanie awarii: działała wyłącznie strona główna, a w jej treści znalazły się obce wstawki i odnośniki, których właściciel nigdy nie dodał — ukryte tak, żeby nie było ich widać w przeglądarce. Trzeba było odbudować całość, nie tracąc ani jednego adresu z indeksu.
Rozwiązanie
Zamiast czyścić starą instalację, zbudowaliśmy nową: świeży WordPress, autorski motyw bez page-buildera i bez żadnej klasycznej wtyczki, treść wygenerowana z plików źródłowych i zaimportowana idempotentnie. Pięćdziesiąt trzy podstrony — trzy filary DDD, ozonowanie, dziewięć szkodników, sześć typów obiektów i osiemnaście dzielnic Warszawy. Do tego własna mapa witryny, formularz zapisujący każde zgłoszenie w bazie i komplet zabezpieczeń sprawdzony pomiarem, nie deklaracją.

Co zbudowaliśmy — element po elemencie
Serwis firmy DDD zbudowany od zera
DDD WIKI zwalcza szkodniki w mieszkaniach, blokach, biurach, lokalach gastronomicznych, hotelach i magazynach na terenie całej Warszawy. Zbudowaliśmy firmie nowy serwis: własny motyw WordPress, pięćdziesiąt trzy podstrony i panel bez ani jednej klasycznej wtyczki. W kolejnych krokach pokażę najważniejsze rozwiązania.
- Odbudowa
Nowy serwis zamiast sprzątania starego
Diagnoza zajęła pół godziny: kod 404 wracał z serwera WWW, a nie z WordPressa, więc żądanie w ogóle nie docierało do CMS-a — a interfejs programistyczny oddawał komplet trzydziestu trzech stron z pełną treścią. Padł routing, nie baza. Posprzątana instalacja nigdy nie daje jednak pewności, więc poszliśmy w czystą: nowy WordPress, nowy motyw, treść przeniesiona z kontrolą integralności każdego pliku. Logo klienta — jedyny plik ze starej instalacji — przeszło osobne sprawdzenie bajt po bajcie.
- Treść
Pięćdziesiąt trzy podstrony z jednego źródła
Treść nie jest wklepana w edytor: siedzi w plikach źródłowych, z których generator składa strony, a importer wgrywa je do WordPressa po slugu, więc każde kolejne uruchomienie aktualizuje zamiast dublować. Przy okazji wyszła pułapka, której nie widać w żadnym audycie na oko: mapa witryny WordPressa oddawała poprawny XML ze statusem 404, a plik robots wskazywał właśnie na nią. Motyw dostał więc własny generator mapy — status 200 i daty modyfikacji z realnych wpisów.
- SEO lokalne
Osiemnaście dzielnic bez fabryki kopii
Konkurencja z pierwszej strony wyników ma ponad sto podstron sklonowanych z podmienioną nazwą dzielnicy. My zrobiliśmy jedną stronę na dzielnicę, obsługującą wszystkie trzy filary, z treścią wynikającą z zabudowy: wielka płyta to prusaki w pionach wentylacyjnych, kamienica — pluskwy i myszy, nowe osiedle z garażem podziemnym — szczury i komary z zieleni. Przebudowa zmieniła strukturę adresów, więc dwadzieścia cztery stare adresy dostały przypisanie: przekierowania, natywną obsługę starego sluga albo świadomy kod 410 tam, gdzie chcieliśmy, żeby Google szybciej o nich zapomniał.
- Zgłoszenia
Formularz, który nie gubi zgłoszenia, gdy padnie poczta
Zwykły formularz wysyła maila i na tym kończy — jeśli poczta nie wyjdzie, zgłoszenie przepada bez śladu. Nasz najpierw zapisuje je w bazie jako osobny wpis, z telefonem, usługą, podstroną i datą w widoku listy, a dopiero potem próbuje wysłać powiadomienie i zapisuje przy zgłoszeniu status tej wysyłki. Właściciel widzi z listy, czy mail w ogóle wyszedł, bez zaglądania do skrzynki.
- Bezpieczeństwo
Zero wtyczek i zabezpieczenia zmierzone, nie zadeklarowane
Katalog wtyczek na produkcji jest pusty — wszystko, co zwykle robią wtyczki, robi motyw. Warstwa zabezpieczeń weszła jako moduł ładowany obowiązkowo, a jej działanie sprawdziliśmy jako anonimowy gość, bez ciasteczek: siedem różnych dróg wyciągnięcia nazw kont zwraca 404, komunikat logowania jest identyczny dla złego hasła i nieistniejącego konta, a limit prób resetu hasła zadziała, zanim cokolwiek trafi do bazy. Równolegle kontrola, że nic się nie zepsuło: pięćdziesiąt trzy strony, pięćdziesiąt trzy odpowiedzi 200, zero błędów PHP.