Najczęściej zadawane pytania
Odpowiedzi na pytania, które padają najczęściej — od terminów i cennika po diagnozowanie błędów.
Rezerwacje i terminy
Wtyczka nalicza stawkę za każdy zaznaczony dzień, włącznie z dniem końcowym. Zakres od 18 do 22 sierpnia to pięć pozycji, więc przy stawce 512 zł klient zapłaci 2 560 zł. Dashboard opisuje taki pobyt jako „5 nights”. Jeżeli chcesz rozliczać noce w klasycznym rozumieniu (bez dnia wyjazdu), ustaw stawkę odpowiednio wyższą albo poinformuj klientów w opisie produktu, że ostatni dzień również jest płatny.
To zależy od reguły okresu w cenniku. Any range pozwala wybrać dowolny przedział mieszczący się w okresie, Week wymusza pełne tygodnie od wskazanego dnia tygodnia, a Whole range dopuszcza wyłącznie cały okres. Reguły ustawia się per wiersz cennika, więc jeden produkt może mieć sezon z dowolnymi terminami i sezon wyłącznie tygodniowy.
Reguła obowiązuje nie tylko w kalendarzu, ale i na serwerze — przy dodaniu do koszyka, na stronie koszyka i checkoutu oraz przy zapisie rezerwacji. Żądanie omijające kalendarz, na przykład wysłane wprost do sklepu z pojedynczym dniem produktu tygodniowego, zostanie odrzucone z komunikatem mówiącym, jaki zakres jest dopuszczalny. Zakres musi być też ciągły: żeby zarezerwować dwa osobne terminy, klient składa dwa zamówienia.
Tak. Dzień, w którym jedna rezerwacja się kończy, a druga zaczyna, pozostaje dostępny — kalendarz blokuje wyłącznie dni w środku pobytu oraz takie, gdzie pokrywają się dwie rezerwacje. Dzięki temu obsługa rotacji nie wymaga żadnej dodatkowej konfiguracji. Rezerwacja jednodniowa blokuje swój dzień w całości, bo jest on jednocześnie dniem przyjazdu i wyjazdu.
Dzień styku wolno wykorzystać tylko w roli przeciwnej: dzień, w którym ktoś wyjeżdża, może być dniem przyjazdu następnego gościa, a dzień, w którym ktoś przyjeżdża, może być dniem wyjazdu poprzedniego. Nie da się natomiast zarezerwować terminu, który obejmowałby czyjś pobyt w środku — na przykład przy istniejącej rezerwacji od 21 do 22 nowa rezerwacja od 21 do 22 zostanie odrzucona, a od 20 do 21 albo od 22 do 23 przejdzie.
Pamiętaj, że dzień wyjazdu jest płatny także dla wyjeżdżającego gościa (patrz pytanie o naliczanie ceny wyżej), więc dzień rotacji sprzedajesz dwa razy. Pasuje to do wynajmu liczonego za dzień. Jeśli obiekt wymaga doby przerwy między klientami — łódź albo samochód do przygotowania — ustaw Changeover day (Dzień rotacji) na Zablokowany na dobę serwisową w BookingHive → Global settings albo na samym produkcie, w jego zakładce Price List, gdzie ustawienie produktu nadpisuje globalne. Programista może też rozstrzygnąć to w kodzie filtrem bookinghive_release_changeover_day, który ma ostatnie słowo.
Jedna rzecz do zapamiętania przy zmianie tego ustawienia na już działającym sklepie: przestawienie produktu na Zablokowany na dobę serwisową działa od zaraz również na rezerwacje złożone wcześniej. Dzień, który był wolny jako dzień rotacji, staje się zajęty, więc klient, który trzyma go w koszyku, zobaczy przy przejściu do płatności komunikat o niedostępnych datach. To nie błąd, tylko nowa reguła zastosowana do koszyka złożonego pod starą. Zmiana w drugą stronę, na Wolny dla następnej rezerwacji, tylko dodaje dostępność i nikomu nie przerywa zakupu.
Tylko na tyle, na ile pozwala okres cenowy. Domyślnie okres sprzedaje jedną rezerwację na dobę i wtedy nie: wtyczka sprawdza dostępność przy dodaniu do koszyka oraz ponownie na stronie koszyka i checkoutu, a sam zapis rezerwacji jest szeregowany — dwa zamówienia domykane w tej samej chwili są obsługiwane jedno po drugim, a przed zapisem każde z nich jeszcze raz sprawdza terminy. Pierwsze zamówienie zajmuje termin, drugie zostaje odrzucone z komunikatem o zajętych datach.
Jeżeli okres ma ustawiony Number of seats (Limit miejsc), ta sama machineria liczy miejsca zamiast odpowiadać tak/nie, więc termin sprzedaje się do wyczerpania miejsc, a ostatnie wolne miejsce bierze to zamówienie, które o nie poprosi pierwsze. Podwójna rezerwacja nie powstanie w żadnym z tych trybów.
Nie. Kalendarz wyszarza dni przeszłe, a walidacja po stronie serwera odrzuca je również wtedy, gdy klient miał stronę otwartą od dłuższego czasu albo próbował wysłać dane pomijając kalendarz.
Cennik i reguły okresów
Kalendarz pokazuje wyłącznie dni objęte wierszem cennika. Produkt bez cennika — albo z cennikiem tylko dla innego roku — jest widoczny w sklepie, ale nie da się go zarezerwować. Sprawdź zakładkę Price List i przełącznik roku nad tabelą.
Tak. Wiersze są przypisane do roku i przełącznik nad tabelą pokazuje wyłącznie wybrany rok. Wiersze z innych lat nie znikają — trzeba je tylko dodać, zanim zacznie się nowy sezon. Dobrą praktyką jest wprowadzenie kolejnego roku razem z ogłoszeniem cennika.
Dla dnia objętego więcej niż jednym wierszem obowiązuje pierwszy dopasowany wiersz. Efekt jest trudny do przewidzenia przy edycji, dlatego lepiej trzymać okresy rozłączne — koniec jednego dzień przed początkiem następnego.
Dla reguły Any range tak — dostępna jest pozostała część okresu, licząc od dziś. Dla reguły Week dostępny jest najbliższy pełny tydzień zaczynający się wskazanym dniem tygodnia. Reguła Whole range przestaje być dostępna, bo z definicji rezerwuje się cały okres.
Tak — wypełnij Number of seats (Limit miejsc) na okresie cennika. Kalendarz zacznie wtedy liczyć, ile miejsc danego dnia jest zajętych, zamiast zamykać dzień po pierwszej rezerwacji, i będzie proponował ten dzień aż do wyczerpania miejsc. Przydaje się przy czterech stanowiskach, sześciu kajakach czy dziesięciu miejscach na rejsie sprzedawanych jako jeden produkt.
Pole żyje na okresie, a nie na produkcie, więc wysoki sezon może oferować inną liczbę miejsc niż niski. Puste oznacza jedną rezerwację dziennie, czyli dokładnie to, jak zachowuje się każdy cennik ułożony przed tą funkcją.
Tak, i to jest sens tego pola: w dniach należących do okresu z limitem cena jest mnożona przez liczbę zajmowanych miejsc. Okres z pustym polem nadal rozlicza się za cały pobyt, niezależnie od tego, ile osób jest na rezerwacji.
Czyli mamy jeden przełącznik, nie dwa: ustawienie limitu włącza zarazem limit i wycenę za miejsce. Sklep, który nigdy nie wypełni tego pola, zachowuje wycenę, jaką miał do tej pory.
Pole ilości pod kalendarzem nie da się podnieść wyżej niż najmniejsza liczba wolnych miejsc w wybranym zakresie — po zaznaczeniu terminu z nocą, w której zostały dwa miejsca, pole zatrzyma się na dwóch. Prośba o więcej, na przykład przez wysłanie formularza bezpośrednio, zostaje odrzucona komunikatem mówiącym, ile miejsc jest jeszcze wolnych.
Wybierz regułę Week — obok ceny pojawi się select Start of period z dniem tygodnia. Działa to zarówno przy dodawaniu wiersza, jak i przy edycji już zapisanego: kliknij Edit przy wierszu, wybierz Week, wskaż dzień tygodnia i zapisz produkt.
Produkty i konfiguracja
Tryb decyduje o tym, czym jest liczba podana przez klienta. Guests (one cart line) trzyma pobyt jako jedną pozycję koszyka niosącą liczbę osób — właściwe dla apartamentu czy stanowiska, gdzie jedna rezerwacja to jedna grupa. Units (separate cart quantity) zamienia tę liczbę na ilość w koszyku WooCommerce — właściwe dla wynajmu sztuk: kajaków, rowerów, sprzętu.
Tryb nie decyduje o tym, czy liczba mnoży cenę; decyduje o tym Number of seats (Limit miejsc) na okresie — patrz pytanie wyżej. Tryb zmienia natomiast nazwę kolumny: przy Guests czyta się ona Liczba miejsc, przy Units — Ilość sztuk.
Tak. Pole Quantity mode w zakładce Price List produktu domyślnie ma wartość Inherit global default (…), czyli dziedziczy ustawienie globalne, ale można je nadpisać dla konkretnego produktu.
Nie. Moduł Core jest oznaczony jako Always enabled i nie ma przełącznika, bo odpowiada za typ produktu, cenniki, kalendarz i zapis rezerwacji. Pozostałe moduły — Spectator Views i Stay Notifications — można włączać i wyłączać dowolnie.
Ustawienia zostają w bazie. Wyłączenie zdejmuje funkcje modułu z frontendu i panelu, a po ponownym włączeniu konfiguracja wraca w tym samym stanie.
Nie — rezerwacja jest produktem wirtualnym, więc WooCommerce nie liczy dla niej wysyłki. Ma to jeden praktyczny skutek: metody płatności wymagające wysyłki (na przykład płatność przy odbiorze w domyślnej konfiguracji) nie pojawią się na checkoucie. Trzeba włączyć metodę obsługującą zamówienia wirtualne.
Powiadomienia e-mail i anulowanie pobytu
Trzy, wszystkie konfigurowalne w WooCommerce → Settings → Emails: Booking Cancellation Link (do klienta zaraz po rezerwacji, z linkiem do samodzielnego anulowania), Booking Reminder (przypomnienie przed pobytem) i Booking Cancellation Confirmed (potwierdzenie anulowania).
Z linku w mailu Booking Cancellation Link. Link jest podpisany tokenem powiązanym z konkretną rezerwacją, więc działa tylko dla adresata i tylko do momentu wyznaczonego przez Cancellation cutoff (hours).
Do liczby godzin przed rozpoczęciem pobytu ustawionej w polu Cancellation cutoff (hours) w ustawieniach modułu Stay Notifications. Domyślnie są to 24 godziny. Po tym czasie link przestaje działać.
W terminach zaznaczonych w Reminder settings: 14 dni, 7 dni i 1 dzień przed rozpoczęciem pobytu. Każdy termin ma osobny przełącznik, a nad nimi jest główny przełącznik Enable reminder emails.
Z modalu rezerwacji na ekranie Reservations — sekcja REMINDERS SENT wymienia wysłane przypomnienia. Jeśli nic tam nie ma, przypomnienie jeszcze nie zostało wysłane.
Zarządzanie rezerwacjami w panelu
Lista zamówień pokazuje transakcje, a ekran Reservations pokazuje pobyty — z zakresem dat, liczbą nocy, produktem i statusem. Jedno zamówienie na pięć nocy jest tu jedną pozycją, pogrupowaną w miesiącu, w którym się zaczyna.
Statusy processing i completed blokują termin jako zajęty, a pending i on-hold jako wstępnie zajęty. Anulowanie, zwrot i nieudana płatność zwalniają daty, więc termin wraca do kalendarza.
W modalu szczegółów, w sekcji CHANGE STATUS — select ze statusami i przycisk Save status. Zmiana dotyczy całego zamówienia WooCommerce, a nie pojedynczego dnia, i może wysłać klientowi standardowy mail WooCommerce o zmianie statusu.
Paskiem filtrów nad listą. Pole Search przyjmuje nazwisko gościa albo numer zamówienia, a obok są filtry po produkcie, statusie i zakresie dat. Przycisk Reset czyści wszystkie filtry.
ALL RESERVATIONS to liczba wszystkich rezerwacji, UPCOMING — przyszłych, ONGOING — trwających, a REVENUE (30 DAYS) to przychód z ostatnich 30 dni. Kafelki uwzględniają aktualnie ustawione filtry, więc po odfiltrowaniu jednego zamówienia pokażą wartości tylko dla niego.
Daty, skróty dni tygodnia i nagłówki miesięcy idą za językiem ustawionym w Twoim własnym profilu WordPressa, więc dwie osoby obsługujące ten sam sklep mogą czytać ten ekran każda w swoim języku. Kwoty nie: te zawsze idą za ustawieniami WooCommerce → Ustawienia → Ogólne — symbolem waluty i jego pozycją, separatorem dziesiętnym i separatorem tysięcy oraz liczbą miejsc po przecinku. Kwota na tym ekranie wygląda więc dokładnie tak jak w całym pozostałym sklepie, niezależnie od używanego języka.
Problemy i rozwiązywanie błędów
Najczęstsza przyczyna to brak wiersza cennika dla danego roku albo dla bieżącego okresu — kalendarz oferuje wyłącznie dni objęte cennikiem. Sprawdź zakładkę Price List, przełącznik roku i to, czy okresy nie kończą się przed dzisiejszą datą. Drugą przyczyną bywa rezerwacja zajmująca cały widoczny zakres — zajęte dni też są wyszarzone.
Okres cennika, w który wpadają wybrane daty, nie ma ustawionego Number of seats (Limit miejsc) — a to on decyduje o mnożeniu, nie tryb ilości. Wypełnij limit na tym okresie w zakładce Price List produktu. Tryb ilości (Guests / Units) mówi tylko, czym jest podana liczba i jak nazywa się kolumna.
Sprawdź dwie rzeczy: czy nie minął czas z pola Cancellation cutoff (hours) (domyślnie 24 godziny przed rozpoczęciem pobytu) i czy moduł Stay Notifications jest włączony. Po przekroczeniu cutoffu link z maila przestaje działać, co jest zachowaniem zamierzonym.
Przypomnienia wysyła zadanie cron uruchamiane raz na dobę. Na witrynie bez ruchu WP-Cron nie ma kto wywołać, więc zadanie nie startuje — w takim wypadku ustaw systemowy cron wywołujący wp-cron.php. Sprawdź też, czy Enable reminder emails jest włączone, czy zaznaczony jest przynajmniej jeden termin i czy sklep w ogóle wysyła maile (najprościej przyciskiem Send a test email w ustawieniach maila).
Operacje w tabeli cennika — Accept przy nowym wierszu i Delete przy istniejącym — działają tylko w przeglądarce. Cennik trafia do bazy dopiero po kliknięciu Update na produkcie. Jeśli przypadkiem usunięto wiersz, wystarczy odświeżyć stronę produktu bez zapisywania, żeby przywrócić stan z bazy.
Rezerwacja jest produktem wirtualnym, więc metody wymagające wysyłki nie są dostępne. Włącz metodę obsługującą zamówienia wirtualne — na przykład przelew bankowy — w WooCommerce → Settings → Payments.