Terminarz pokazów – wtyczka WordPress dla teatru ognia

Terminarz pokazów to wtyczka WordPressa napisana na zamówienie Manipura Teatr Ognia – grupy pokazów ognia i światła z Pomorza. Rozwiązuje jeden problem, który ma większość firm działających „na terminy”: ten sam terminarz musi odpowiadać trzem różnym osobom, a każda z nich powinna widzieć co innego. Klient pyta, czy dany dzień jest wolny. Artysta pyta, o której wyjeżdżamy. Manager potrzebuje telefonu do klienta i kwoty zaliczki. Wtyczka bierze jeden arkusz i robi z niego trzy osobne widoki – bez przepisywania czegokolwiek do drugiego systemu.

Publiczny kalendarz pokazów na stronie: siatka września 2026, dni pomarańczowe z nazwami wydarzeń i żółte z rodzajem imprezy, pod spodem legenda „pokaz publiczny – możesz przyjść” i „termin zajęty”
Widok, który dostaje odwiedzający stronę. Pomarańczowy dzień można odwiedzić, żółty jest po prostu zajęty – bez adresu, godziny i nazwiska klienta.

Po co powstała

Terminarz Manipury żył w jednym pliku na dysku managera. Żeby odpowiedzieć klientowi na pytanie o wolny termin, trzeba było otworzyć plik, w którym obok daty stały telefon, adres i cena. Artyści dostawali zrzuty ekranu w wiadomościach, a plik z danymi osobowymi krążył w załącznikach. Przy okazji nikt nie miał pewności, czy wszyscy patrzą na tę samą wersję.

Gotowe wtyczki kalendarzowe tego nie rozwiązują, bo zakładają, że wydarzenia wpisuje się ręcznie w panelu WordPressa. Manager Manipury pracuje w arkuszu – szybko, po swojemu i również wtedy, gdy nie ma internetu. Narzędzie miało się do tego dopasować, a nie odwrotnie.

Jak to działa na co dzień

Codzienna obsługa to trzy kroki i żadnej nauki nowego programu:

  • 1. Wgraj arkusz – ten sam plik, który manager prowadzi u siebie. Wtyczka sama znajduje wiersz z nagłówkami i rozpoznaje kolumny po nazwach.
  • 2. Sprawdź podgląd – każdy pokaz wyświetlony dwa razy obok siebie: w wersji dla klienta i w wersji dla ekipy. Widać dokładnie to, co za chwilę pojawi się na stronie.
  • 3. Opublikuj – dopiero to kliknięcie zmienia cokolwiek na stronie. Poprzednia wersja trafia do historii i można do niej wrócić.

Arkusz na dysku pozostaje jedynym miejscem, w którym powstają dane. Strona tylko go czyta i nigdy do niego nie zapisuje – dzięki temu nie ma sytuacji, w której ta sama informacja została zmieniona w dwóch miejscach naraz i trzeba zgadywać, która wersja jest prawdziwa.

Ekran podglądu przed publikacją w panelu WordPressa: tabela z wierszami pokazów, przy każdym dwie kolumny obok siebie – „co zobaczy klient” i „co zobaczy ekipa” – oraz przełącznik „nie pokazuj publicznie”
Podgląd przed publikacją. Obie kolumny powstają tak samo jak strona, więc to, co tu widać, jest tym, co pojawi się na żywo.

Co widzi kto

To najważniejsza część narzędzia i jednocześnie najmniej widoczna. Każdy z trzech widoków dostaje własny, rozłączny zestaw pól – nie „te same dane z ukrytymi kolumnami”, tylko osobno zbudowaną porcję informacji. Pole, którego nie ma na liście danego widoku, nie ma jak się w nim pojawić, nawet przez pomyłkę i nawet po dołożeniu nowej kolumny w arkuszu.

  • Klient – data, godziny, rodzaj pokazu, miejsce i miasto, nazwa wydarzenia, link. Przy pokazie prywatnym: sama informacja, że termin jest zajęty.
  • Ekipa – to co wyżej plus opis pokazu, skład, status, uwagi i godzina wyjazdu.
  • Manager – wszystko, łącznie z ustaleniami z klientem, kontaktem, danymi do faktury i kwotami.

O tym, czy pokaz jest publiczny, decyduje jedna kolumna w arkuszu – plus wyłącznik przy konkretnym wierszu na ekranie podglądu. Rodzaj imprezy nie ma tu nic do rzeczy: występ w hotelu bywa publiczny tak samo jak pokaz uliczny.

Funkcje

Wgrywanie i publikacja

  • Obsługa Excela, Open Office i CSV – kolumny rozpoznawane po nazwach, a nie po kolejności, więc można je przestawiać i dokładać własne bez psucia importu.
  • Kontrola błędów – nieczytelna data albo pokaz publiczny bez podanego miejsca blokują zapis. Drobniejsze braki są tylko oznaczane, bo wiersz jest mniej użyteczny, ale nikogo nie wprowadza w błąd.
  • Zakładka na sezon – jeden plik, karta na rok. Strona pokazuje kilka lat naraz bez żadnych ustawień, a nowy sezon to zduplikowanie zakładki.
  • Historia wczytań – każda publikacja zostaje zapisana. Powrót do wcześniejszej wersji terminarza to jedno kliknięcie.
  • Kolumny kosztowe pomijane – transport, materiały, wypłaty i podatek zostają wyłącznie w arkuszu managera i w ogóle nie trafiają na serwer.
Ekran zarządzania terminarzem w panelu WordPressa: pole wgrywania arkusza, tabela historii wczytań z datami i liczbą pokazów, eksport CSV, lista shortcodów, hasło dla ekipy oraz ustawienia kalendarza i chatbota
Cała obsługa mieści się na jednym ekranie: wgrywanie, historia wczytań z przyciskiem przywrócenia, eksport, hasło dla ekipy i ustawienia kalendarza.

Kalendarz dla klientów

  • Shortcode i widget Elementora – kalendarz wstawia się na dowolną podstronę, także w kilku miejscach naraz.
  • Dwa widoki – siatka miesiąca i lista terminów, przełączane jednym kliknięciem.
  • Czytelne oznaczenia – jeden pokaz danego dnia na żółto, dwa lub więcej na pomarańczowo. Dymek ze szczegółami po najechaniu, a na telefonie panel przy dolnej krawędzi.
  • Zakres do ustawienia – ile miesięcy w przód i wstecz ma być widocznych. Ustawienie obowiązuje także dla kogoś, kto ręcznie wpisze adres z innym miesiącem.
  • Wygląd z motywu strony – kalendarz dziedziczy kroje pisma i kolory tekstu, więc nie wygląda jak doklejony element z innej strony.
Widok ekipy: kalendarz miesiąca z otwartym okienkiem „Szczegóły pokazu” – data, wyróżniony wiersz „Wyjazd 17:50”, miejsce, rodzaj pokazu, skład ekipy, status i uwagi dla ekipy
Ekipa klika w dzień i dostaje wszystko, co potrzebne na miejscu. „Wyjazd” jest wyróżniony, bo jako jedyne pole mówi, o której trzeba ruszyć.

Terminarz dla ekipy

  • Jedno wspólne hasło – bez zakładania kont dla artystów i bez logowania do WordPressa. Hasło wpisuje się mniej więcej raz w miesiącu.
  • Zmiana hasła odcina wszystkich naraz – gotowy sposób na odebranie dostępu komuś, kto odchodzi z ekipy.
  • Godzina wyjazdu – jedyne pole na karcie, które jest poleceniem, a nie opisem, więc jako jedyne jest wyróżnione. Wtyczka ostrzega, gdy w arkuszu wyjazd wypada później niż początek pokazu.
  • Lista albo kalendarz – ten sam terminarz w dwóch układach, z filtrami i wyszukiwarką.
  • Pokazy niepotwierdzone przygaszone – status „Zapytanie” dostaje przerywaną krechę zamiast pełnej, żeby nie mylił się z terminem naprawdę zajętym.
  • Tylko do odczytu – z tej strony nie da się niczego zmienić ani pobrać danych klientów.

Panel managera

  • Pełne dane pokazu – ustalenia z klientem, kontakt, dane do faktury, cena i zaliczka, dostępne także z telefonu, gdy klient akurat dzwoni.
  • Wyszukiwarka po kliencie – działa również po nazwisku i numerze telefonu, nie tylko po nazwie miejsca.
  • Filtry – nadchodzące, minione i wszystkie, a do tego status i rodzaj imprezy.
  • Poprawki wyświetlania – nazwę wydarzenia, link i to, czy pokaz jest publiczny, można dopracować bez wracania do arkusza. Zmiany przeżywają wgranie kolejnej wersji pliku, bo przypinają się do pokazu po dacie, miejscu i godzinie, a nie po numerze wiersza.
  • Eksport do CSV – w tym samym układzie kolumn, którego używa wgrywanie, więc plik da się poprawić i wgrać z powrotem bez żadnych strat.
Panel managera w widoku listy: karty pokazów z wierszami Wyjazd, Miejsce, Pokaz, Ekipa, Uwagi, a pod nimi Zamawiający, Telefon, E-mail, Firma, Rozliczenie z ceną i zaliczką, Ustalenia z klientem i Źródło
Ten sam pokaz w panelu managera. Poniżej danych organizacyjnych dochodzi wszystko, czego nie widzi ani klient, ani ekipa.

Ochrona danych

  • Dane kontaktowe i kwoty zaszyfrowane – klucz nie leży w bazie danych, więc sama jej kopia nic nie ujawnia.
  • Wgrywany plik nie trafia do biblioteki mediów – inaczej arkusz z telefonami i cenami byłby do pobrania publicznym adresem.
  • Możliwość niegromadzenia danych – jeden przełącznik sprawia, że telefony, maile i kwoty w ogóle nie są zapisywane na serwerze, a to, co już tam było, zostaje natychmiast skasowane.
  • Strona ekipy poza wyszukiwarkami – z wyłączonym zapisem w pamięci podręcznej, żeby nie pokazała się przypadkowemu gościowi.

Chatbot na stronie

  • Terminarz w odpowiedziach asystenta – odwiedzający może zapytać „czy macie wolny 15 sierpnia?” i dostać odpowiedź zgodną z kalendarzem.
  • Wyłącznie dane publiczne – zajęte terminy trafiają tam jako same daty, bez miejsca, godziny i rodzaju imprezy. Uwagi dla ekipy i dane klientów nie trafiają tam nigdy.
  • Zawsze aktualne – publikacja nowej wersji terminarza od razu zmienia to, co wie asystent.

Przeniesienie starych danych

Przed uruchomieniem trzeba było przenieść historię: 47 pokazów z arkusza prowadzonego przez kilka sezonów. Nie zrobiłem tego po cichu – do gotowego pliku dołączył raport wymieniający wiersze, które wymagały decyzji managera, i te, które uzupełniłem własną interpretacją, z podaniem, co dokładnie przyjąłem i dlaczego. Przy okazji wyszły na jaw błędy w starych formułach podsumowań, przez które roczne przychody nie zgadzały się z sumą pozycji w terminarzu.

Migracja bez takiego raportu jest gorsza niż jej brak: przenosi cudze dane razem z cudzymi domysłami i nie zostawia śladu, gdzie kończy się jedno, a zaczyna drugie.

Dla kogo to ma sens

Wtyczka powstała dla teatru ognia, ale opisany problem jest wspólny dla każdej działalności opartej na terminach i niewielkim zespole w trasie: zespołów muzycznych, animatorów, fotografów, firm cateringowych, wypożyczalni sprzętu. Wszędzie tam jedno pytanie brzmi „czy macie wolne”, drugie „o której jesteśmy na miejscu”, a trzecie „ile było ustalone” – i nie powinny mieć wspólnej odpowiedzi.

Od strony technicznej to zwykła wtyczka w PHP, działająca na typowej instalacji WordPressa. Nie wymaga zewnętrznych usług, kont ani abonamentów – wszystko dzieje się na tym samym serwerze, na którym stoi strona.


Dane na zrzutach ekranu są demonstracyjne – nazwy miejsc, dane kontaktowe i kwoty zostały podmienione na wymyślone. Narzędzie działa na stronie Manipura Teatr Ognia (tanieczogniem.com); widok ekipy i panel managera są dostępne wyłącznie po zalogowaniu.