Настройка WooCommerce Bookings (бронирование)
WooCommerce Bookings добавляет к магазину систему бронирования временных слотов: запись на услугу, аренда, консультации, экскурсии. Продукт превращается в «бронируемый ресурс» с расписанием, доступностью и правилами.
Модель данных плагина
Bookings работает с тремя сущностями:
- Bookable product — продукт с настроенными слотами и ценами
- Booking — конкретная запись: кто, когда, какой продукт, статус
- Resource — дополнительный ресурс, привязанный к продукту (например, конкретный мастер или кабинет)
Данные хранятся в wp_posts (тип wc_booking) и wp_postmeta. Расписание доступности — в мета-поле _wc_booking_availability.
Типы бронирования
При создании продукта выбирается duration type:
| Тип | Применение |
|---|---|
| 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: 2025-12-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 );
Ресурсы и множественное бронирование
Ресурсы — это независимо доступные единицы одного продукта. Пример: услуга «Стрижка» с ресурсами «Мастер Анна» и «Мастер Сергей». Каждый ресурс имеет собственное расписание и может добавлять доценку к стоимости.
Параметр has_persons: true включает выбор количества людей, min_persons / max_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 часов до начала (настраивается) -
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 дня.







