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 den | 55 € |
| 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:
- Výber termínu: Datum příchodu a odchodu.
- Parkovacie miesto: Zobrazení ceny, dostupnosti a volba transferu.
- Údaje zákazníka: Jméno, telefon, e-mail, ŠPZ, počet osob.
- 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žka | Cena |
|---|---|
| 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.