WordPress parkování rezervační systém

Jak jsme nastavili online rezervační systém parkování u letiště na WordPressu

Náš klient provozuje soukromé parkoviště v blízkosti letiště a potřeboval kompletní online rezervační systém. Web běží na WordPressu s šablonou Divi 5 a cílí primárně na slovenský trh.

Hlavní požadavky byly jasné:

  • Kapacita 200 parkovacích míst se sledováním obsazenosti v reálném čase.
  • Rezervace na celé kalendářní dny (od–do).
  • Dynamický ceník s 5 cenovými pásmy podle délky parkování.
  • Automatický transfer na letiště – zdarma od 6 dní, volitelný za příplatek pro kratší pobyty.
  • Formulář s vlastními poli (ŠPZ, počet osob pro transfer, předpokládaný čas příchodu).
  • Platba pouze v hotovosti na parkovišti (bez online plateb).
  • E-mailové notifikace pro zákazníka i správce.
  • Kompletní překlad do slovenčiny.
  • 100% responzivita na mobilních zařízeních.

Výběr řešení: Proč jsme nešli cestou WooCommerce

Po analýze dostupných možností jsme zvolili Car Park Booking System od QuanticaLabs (prémiový plugin z CodeCanyon za 59 $). Na rozdíl od generických rezervačních systémů je tento plugin přímo navržený pro správu parkovacích rezervací.

Co plugin nativně nabízí:

  • Pokročilá cenová pravidla podle délky pobytu.
  • Sledování obsazenosti v reálném čase.
  • Přehledný kalendář příjezdů a odjezdů v administraci.
  • Integraci s Google Calendar, SMS notifikace a SMTP e-maily.

Největší výhoda? Plná funkčnost bez WooCommerce. Klient robustní e-commerce řešení na webu nechtěl, což tento plugin plně respektuje a funguje zcela samostatně.

Co jsme nastavili krok za krokem

1. Základní konfigurace

Nastavili jsme měnu (EUR), formát data pro slovenský trh (d.m.Y), billing type na denní účtování a vytvořili lokaci parkoviště s 200 místy, GPS souřadnicemi a provozní dobou.

2. Dynamický ceník a 5 cenových pravidel

Tohle byla nejnáročnější část z hlediska logiky. Klient požadoval ceník, kde se cena za den mění podle celkové délky rezervace:

Délka parkováníCena
1 den55 €
2–5 dní30 € / den
6–7 dní15 € / den
8 dní104 € fixně
9 a více dní104 € + 12 € za každý další den

Vytvořili jsme 5 separátních cenových pravidel (Pricing Rules), každé s podmínkou na počet dní a odpovídající cenou. Pro pravidlo „9+ dní“ jsme využili režim „Calculation based on rental days quantity (all ranges)“ s funkcí sčítání cen po rozsazích. To umožnilo elegantně kombinovat fixní základ (prvních 8 dní × 13 € = 104 €) s proměnnou sazbou (12 € za každý další den).

Všechny ceny jsou uvedené včetně DPH.

3. Logika transferu: Vlastní PHP/JS plugin

Transfer na letiště měl být pro pobyty na 1–5 dní volitelný za 24 € a od 6 dní automaticky zdarma. Zvolený plugin toto nativně neumí (nemá podmíněnou cenu extras podle délky rezervace).

Vyhnuli jsme se komplikovaným kompromisům a vytvořili dva booking extras (placený a bezplatný). K tomu jsme napsali vlastní WordPress plugin, který:

  • Sleduje počet zvolených dní v reálném čase.
  • Pro 1–5 dní zobrazí placený transfer za 24 €.
  • Pro 6+ dní placený transfer skryje a podstrčí bezplatný.

Řešení funguje přes MutationObserver v JavaScriptu – reaguje okamžitě na změnu dat ve formuláři, bez nutnosti refreshe stránky.

Pro představu – takto vypadá zjednodušené jádro našeho řešení. JavaScript běží v patičce a přes MutationObserver sleduje změny ve formuláři. Všimněte si regulárního výrazu (regex), který počítá dny – museli jsme do něj přidat slovenské tvary („dní“, „deň“), aby kód fungoval i po překladu pluginu.

add_action('wp_footer', function() {
    ?>
    <script>
    (function() {
        'use strict';

        // ID doplňkových služeb v pluginu
        var PAID_ID = '2152'; 
        var FREE_ID = '2161';
        var MIN_DAYS_FREE = 6;

        // Funkce pro získání počtu dní z formuláře
        function getDayCount() {
            var boxes = document.querySelectorAll('.cpbs-summary-box');
            for (var i = 0; i < boxes.length; i++) {
                var text = boxes[i].textContent || '';
                // Rozpoznání anglických i slovenských textů
                var m = text.match(/(\d+)\s*(?:day|days|dní|dňa|deň|dň|dni)/i);
                if (m) return parseInt(m[1], 10);
            }
            return 0;
        }

        // Hlavní logika pro zobrazení/skrytí transferu
        function update() {
            var days = getDayCount();
            if (days === 0) return;

            var paidLi = document.querySelector('li[data-id="' + PAID_ID + '"]');
            var freeLi = document.querySelector('li[data-id="' + FREE_ID + '"]');
            if (!paidLi || !freeLi) return;

            if (days >= MIN_DAYS_FREE) {
                // 6 a více dní: skrýt placený, zobrazit bezplatný
                paidLi.style.display = 'none';
                freeLi.style.display = '';
            } else {
                // 1-5 dní: zobrazit placený, skrýt bezplatný
                paidLi.style.display = '';
                freeLi.style.display = 'none';
            }
        }

        // MutationObserver hlídá změny v DOMu (překliknutí v kalendáři)
        var observer = new MutationObserver(function() {
            clearTimeout(window._fpkTimer);
            window._fpkTimer = setTimeout(update, 300);
        });

        // Spuštění sledování
        document.addEventListener('DOMContentLoaded', function() {
            var target = document.querySelector('.cpbs-booking-form') || document.body;
            observer.observe(target, { childList: true, subtree: true, characterData: true });
        });
    })();
    </script>
    <?php
});

4. Vlastní formulářová pole

Přidali jsme pole požadovaná klientem pro hladký provoz:

  • ŠPZ (EČV): Povinné pole pro poznávací značku.
  • Počet osob: Důležité pro kapacitu transferu.
  • Předpokládaný čas příchodu: Výběr (select) s hodinovými intervaly.

5. Kompletní překlad do slovenčiny

Plugin nativně slovenčinu neobsahuje. Provedli jsme kompletní překlad (více než 500 řetězců) přes .po/.mo soubory. Počeštili (resp. poslovenštili) jsme frontend formuláře, chybové hlášky, administraci i e-mailové notifikace.

6. E-maily a administrace

Pro spolehlivé doručování jsme nasadili SMTP. Zákazník po dokončení dostane automatické potvrzení rezervace s detaily a správce parkoviště obdrží kopii. V administraci WordPressu má majitel k dispozici přehledný dashboard s kalendářem příjezdů a odjezdů pro rychlou orientaci.

Ukázka hotového řešení

Formulář je plně responzivní a provádí zákazníka 4 intuitivními kroky:

  1. Výber termínu: Datum příchodu a odchodu.
  2. Parkovacie miesto: Zobrazení ceny, dostupnosti a volba transferu.
  3. Údaje zákazníka: Jméno, telefon, e-mail, ŠPZ, počet osob.
  4. Zhrnutie rezervácie: Kompletní přehled a potvrzení.

Časová a finanční náročnost

Často se nás ptáte, kolik takové řešení na míru stojí. Tady je reálný rozpad tohoto projektu:

PoložkaCena
Plugin Car Park Booking System (jednorázová licence)59 $ (~55 €)
Konzultace a nastavení pluginu (3 hodiny)150 €
Vlastní vývoj transferu – PHP/JS (2 hodiny)100 €
Překlady a testování chodu (1 hodina)50 €
Celkem (bez DPH)cca 360 €

Poznámka: Hodinová sazba počítána na 50 € + DPH / hod.

Největší benefit? Toto řešení je jednorázové. Klient neplatí žádné měsíční poplatky za pronájem SaaS rezervačních systémů, které u konkurence běžně stojí 30–100 € měsíčně. Investice se mu tak vrátí už za pár měsíců.

Závěr

WordPress doplněný o dedikovaný rezervační plugin je pro menší a střední parkoviště ideální volbou. Klient má plnou kontrolu nad systémem, neplatí měsíční poplatky a může si vše přizpůsobit. Klíčové je správně nastavit cenová pravidla a dotáhnout technické detaily, jako je specifická logika příplatků a lokalizace.

Pokud provozujete parkoviště, autokemp nebo jinou službu s časovými rezervacemi a hledáte spolehlivé řešení na WordPressu, ozvěte se nám.

Máte podobný projekt a zasekli jste se? Rádi vám pomůžeme s výběrem a nastavením rezervačního systému na míru.

Neuteklo vám něco?

Pokrok a WordPress na nikoho nečekají, tak nám tu raději nechte email, ať o nic nepřijdete!

Nespamujeme! Další informace naleznete v našich zásadách ochrany osobních údajů.

Správa WordPress webu

Nemusíte na to být sami. Pomůžeme vám s pravidelnou údržbou i novými vylepšeními.

Více informací

Diskuze

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Nákupní košík
Přejít nahoru