Клієнт запускає сервіс з оренди обладнання — за тиждень з'ясовується, що двоє людей забронювали один і той самий екземпляр на один час. Це знайома ситуація? Ми стикаємося з такими кейсами постійно. WooCommerce Bookings — плагін, який перетворює звичайний товар на броньований ресурс з розкладом, доступністю та правилами. Він вирішує проблему подвійних бронювань і ручного узгодження слотів. Але без правильного налаштування він скоріше додасть головного болю, ніж порядку. За час роботи ми налаштували WooCommerce Bookings для більш ніж 50 проєктів — від салонів краси до прокату техніки. Середня економія часу на управління бронюваннями після впровадження — до 10 годин на тиждень, що скорочує витрати на персонал на 30–40%. В одному проєкті з 15 ресурсами та 20 слотами на день ручне узгодження займало 5 годин на тиждень, а після автоматизації — 20 хвилин. Це в 15 разів швидше. Наш досвід гарантує, що ваша система бронювання працюватиме без збоїв. Отримайте консультацію за вашим сценарієм.
Модель та типи бронювання
Bookings працює з трьома сутностями:
-
Bookable product— продукт з налаштованими слотами та цінами -
Booking— конкретний запис: хто, коли, який продукт, статус -
Resource— додатковий ресурс, прив'язаний до продукту (наприклад, конкретний майстер або кабінет)
Дані зберігаються в wp_posts (тип wc_booking) та wp_postmeta. Розклад доступності — в мета-полі _wc_booking_availability. Всього плагін підтримує до 20 правил доступності на продукт.
Типи бронювання
| Тип | Застосування |
|---|---|
| Fixed blocks | Слоти фіксованого розміру (30 хв, 1 год) |
| Customer-defined | Клієнт обирає довільну тривалість |
| Fixed duration days | Ночі в готелі, дні оренди |
Для подобової оренди: duration = 1 day, min duration = 1, max duration = 14. Вартість множиться на кількість ночей.
Налаштування правил доступності: як уникнути помилок?
Доступність налаштовується через набір правил з пріоритетами:
Rule 1: All days → Bookable (пріоритет низький) Rule 2: Saturday, Sunday → Not bookable Rule 3: 31 грудня → Not bookable (свято) Rule 4: Monday 09:00–18:00 → Bookable Правила обробляються за спаданням пріоритету. Фільтр через хук:
add_filter( 'wc_bookings_product_is_available', function( $is_available, $start, $end, $qty, $product ) { // кастомна логіка: перевірити зовнішній календар, CRM тощо. return $is_available; }, 10, 5 ); Ми часто використовуємо цей хук для інтеграції із зовнішніми системами — наприклад, щоб не продавати слоти, якщо в CRM вже є запис. Згідно з офіційною документацією, хук дозволяє розширити стандартну логіку перевірки доступності.
Чому ресурси критичні для послуг?
Ресурси — це незалежно доступні одиниці одного продукту. Приклад: послуга «Стрижка» з ресурсами «Майстер Анна» та «Майстер Сергій». Кожен ресурс має власний розклад і може додавати дооцінку до вартості. Без ресурсів клієнт може забронювати одну й ту саму стрижку у двох майстрів одночасно — катастрофа. Ми завжди включаємо has_resources = true для послуг, де важливий розподіл. Параметр has_persons: true включає вибір кількості людей, min_persons / max_persons обмежують діапазон. Ціна може перераховуватися на людину. В одному проєкті ми робили систему бронювання бань: ресурси — різні парні, persons — кількість гостей. Все працювало без конфліктів.
Інтеграція та сповіщення
Синхронізація з Google Calendar
Bookings підтримує двосторонню синхронізацію з Google Calendar через офіційний аддон WooCommerce Bookings — Google Calendar. Схема:
- Нове бронювання → створює подію в Google Calendar через Calendar API
- Подія в Google Calendar → при наступній синхронізації блокує слот у Bookings
Необхідна Google Cloud Console: проєкт, OAuth 2.0 credentials, увімкнений Calendar API. Синхронізація запускається через WP-Cron кожні 15 хвилин або примусово з налаштувань:
// Примусовий запуск синхронізації do_action( 'wc-booking-gcal-sync' ); Сповіщення
Плагін додає кілька типів листів у WooCommerce → Emails:
-
New Booking— менеджеру при створенні -
Booking Confirmed— клієнту при підтвердженні -
Booking Reminder— клієнту за N годин до початку (налаштовується, за замовчуванням за 24 години) -
Booking Cancelled— при скасуванні
Нагадування реалізовані через Action Scheduler — завдання плануються в момент підтвердження бронювання.
Кастомні поля
// Додати поле вибору майстра перед бронюванням add_filter( 'woocommerce_booking_form_fields', function( $fields, $product ) { $fields['preferred_master'] = [ 'type' => 'select', 'label' => 'Бажаний майстер', 'options' => [ '' => 'Будь-який', 'anna' => 'Анна', 'sergey' => 'Сергій' ], ]; return $fields; }, 10, 2 ); Типові проблеми та їх вирішення
- Слоти не з'являються на фронті — найчастіше timezone mismatch: WordPress встановлений у UTC, а правила доступності задані за локальним часом. Перевірте: Settings → General → Timezone має збігатися з очікуваннями клієнта.
- Подвійне бронювання одного слоту — не налаштований параметр
has_resourcesабоcapacity. Без ресурсів та приbooking_duration_type = fixedпотрібно явно вказатиqty = 1(максимум бронювань на слот).
Процес налаштування та терміни
Налаштування одного продукту-послуги з простим розкладом займає 1 робочий день. Кілька ресурсів, Google Calendar, кастомні поля, логіка ціноутворення за датами — 3–4 дні.
Що входить у налаштування?
- Налаштування продуктів та правил доступності під ваш бізнес
- Інтеграція з Google Calendar та зовнішніми системами
- Кастомні поля та сповіщення
- Повна документація та навчання співробітників
- Гарантія на всі роботи та підтримка після запуску
Зв'яжіться з нами для точної оцінки вашого проєкту. Отримайте консультацію за вашим сценарієм.







