Przejdź do treści
Devlom Karol Orzeł
← Blog blog 3 min czytania

Fundacja „Dom w Łodzi” — wtyczka WordPress do rezerwacji prezentów

Własna wtyczka WordPress do rezerwacji prezentów rzeczowych dla Fundacji „Dom w Łodzi”. Zastąpiła płatny WP Inventory Manager: ok. 4 000 linii zamiast 75 000.

Fundacja „Dom w Łodzi” — wtyczka WordPress do rezerwacji prezentów

75 000 → 4 000

linii kodu po wymianie wtyczki

0 zł

rocznej licencji

893

rezerwacji przeniesionych bez utraty historii

Fundacja „Dom w Łodzi” pomaga dzieciom, którym los odebrał zdrowie i opiekę najbliższych. Na stronie fundacji jest lista potrzeb: piżamy, pościel, sprzęt do rehabilitacji, tort na urodziny. Darczyńca wybiera prezent, rezerwuje go, a prezent znika z listy, żeby nikt nie kupił go drugi raz. Napisałem do tego własną wtyczkę WordPress. Zastąpiła płatny system magazynowy i działa na produkcji od 8 września 2026.

Lista prezentów na stronie fundacji z filtrem „Dla kogo”

Na zrzutach są przykładowe prezenty i fikcyjni darczyńcy. Prawdziwych potrzeb fundacji i danych osób, które pomagają, nie pokazuję.

Zadanie

Lista działała wcześniej na WP Inventory Manager z dodatkiem do rezerwacji. To rozbudowany, płatny system magazynowy: ok. 75 000 linii kodu, 12 własnych tabel w bazie i licencja odnawiana co roku. Fundacja korzystała z ułamka jego możliwości. Potrzebowała listy prezentów z kategoriami, formularza rezerwacji, maila z podziękowaniem i tabeli z informacją, kto co zarezerwował.

Każda aktualizacja tak dużej wtyczki to ryzyko dla strony, a licencja to koszt, który organizacja pożytku publicznego wolałaby wydać na dzieci. Zaproponowałem więc, że napiszę wtyczkę, która robi tylko to, czego fundacja naprawdę używa.

Jak to zbudowałem

Prezent to zwykły wpis WordPressa. Tytuł, opis w edytorze, zdjęcie, kategorie, szkice, kosz i wyszukiwarka to funkcje, które WordPress już ma. Wtyczka ich nie pisze od nowa. Dochodzi jedno pole: ile sztuk potrzeba. Do tego jedna tabela na rezerwacje. Całość to ok. 4 000 linii PHP, bez Composera i bez kroku budowania.

Strona prezentu z formularzem rezerwacji

Kilka rzeczy wymagało więcej uwagi, niż widać na pierwszy rzut oka:

  • Ostatnia sztuka. Dwie osoby mogą kliknąć „Rezerwuję” w tej samej sekundzie. Sprawdzenie stanu i zdjęcie sztuki to jedno zapytanie do bazy danych, więc prezent dostaje jedna osoba, a druga widzi komunikat „Ktoś był szybszy”.
  • Cache. Strona fundacji jest cache'owana na tydzień. Gdyby lista prezentów też była, zarezerwowany prezent wisiałby dalej na stronie i dwie osoby kupiłyby to samo. Wtyczka wyłącza cache tylko na stronie prezentów, a reszta serwisu dalej działa szybko.
  • Spam. Formularz chronią cztery warstwy: ukryte pole na boty, minimalny czas wypełniania, limit rezerwacji z jednego adresu IP i opcjonalnie Cloudflare Turnstile. Jeśli Cloudflare nie odpowiada, rezerwacja przechodzi. Awaria zewnętrznej usługi nie powinna kosztować fundacji prezentu.
  • Poczta. Darczyńca dostaje podziękowanie, a fundacja mail z kompletem danych. Odpowiedź trafia od razu do darczyńcy, bez kopiowania adresu.

Panel dla fundacji

Pracownicy fundacji nie musieli uczyć się nowego narzędzia. Prezenty dodaje się tak samo jak wpisy, a na liście od razu widać stan, np. „8 z 12”, i liczbę rezerwacji. Stan można zmienić w Szybkiej edycji, bez otwierania prezentu.

Lista prezentów w panelu WordPressa ze stanem i liczbą rezerwacji

Rezerwacje mają osobną tabelę z filtrami, wyszukiwarką i anulowaniem. Anulowana rezerwacja oddaje sztukę z powrotem na listę. Eksport do CSV otwiera się w Excelu z polskimi znakami.

Tabela rezerwacji z eksportem do CSV

Migracja bez utraty historii

Napisałem komendę WP-CLI, która przeniosła ze starej wtyczki kategorie, prezenty ze stanami i zdjęciami, teksty powitania i podziękowania oraz 893 historyczne rezerwacje. Import można uruchomić najpierw na próbę, a powtórzony nie tworzy duplikatów.

Stare adresy prezentów, udostępniane na Facebooku i w newsletterach, przekierowują na nowe (301), a strona „Zrób prezent” działa bez zmian w treści. Dla darczyńców nic się nie zmieniło, poza tym, że lista działa szybciej.

Telefon

Większość darczyńców trafia na listę z Facebooka, czyli z telefonu. Na wąskim ekranie kategorie zawijają się w kilka wierszy, a prezenty układają się w jedną kolumnę z dużym zdjęciem.

Lista prezentów na telefonie

Efekt

Fundacja ma listę prezentów, która robi dokładnie to, czego potrzebuje, bez rocznej licencji i z kodem ok. 18 razy mniejszym. W pierwszym miesiącu po wdrożeniu darczyńcy zarezerwowali przez nią 49 prezentów.

Masz w WordPressie dużą, płatną wtyczkę, z której używasz jednej funkcji? Często taniej i bezpieczniej jest ją zastąpić małym, własnym kodem. Zobacz, jak zajmuję się opieką nad stroną WordPress i tworzeniem stron www.

Moja rola
Analiza, wtyczka WordPress, migracja danych i wdrożenie
Technologie
WordPress, PHP 8, WP-CLI, Cloudflare Turnstile, LiteSpeed Cache

Może Cię również zainteresować

Powiązane artykuły

Gotowy na start?

Skontaktuj się ze mną i omówmy Twój projekt

Napisz do mnie