Ось сценарій, з яким я стикаюся постійно при налаштуванні сайтів з бронюванням на WooCommerce: у клієнта вже є 30 товарів з виставленими цінами. Він вів їх у WooCommerce місяцями. Потім ми встановлюємо плагін бронювання, і той каже — «чудово, тепер введіть ціни ще раз, ось тут». Вводиш. А через шість тижнів хтось оновлює WooCommerce і забуває про плагін бронювання. І клієнт бачить неправильну ціну.

Дрібниця, яка на масштабі перетворюється на справжню проблему. Саме цей сценарій Baza Booking Calendar і вирішує через інтеграцію з власними метаданими.

Чому більшість плагінів бронювання WooCommerce створюють хаос з цінами

Офіційний плагін WooCommerce Bookings ($249/рік), YITH Bookings та більшість альтернатив на кшталт PluginHive ставляться до цін як до власної зони відповідальності. Ти налаштовуєш ціну всередині налаштувань плагіна бронювання, і вона жодним чином не пов’язана з фактичною ціною товару WooCommerce чи будь-яким іншим полем на сайті. Це нормально, якщо починаєш з нуля — але більшість сайтів не починають.

На практиці все зазвичай виглядає так:

  • Ціни оренди студії або майданчика вже живуть у товарах WooCommerce як _regular_price
  • Погодинні тарифи зберігаються в числових полях ACF (Advanced Custom Fields)
  • Мінімальна тривалість бронювання задана окремо для кожного сервісу в метаполі власного типу запису
  • Таблиці цін веде редактор, який навіть не знає, що на сайті є якийсь плагін бронювання

Зі звичайним плагіном бронювання WooCommerce всі ці дані нічого не варті. Ти дублюєш їх вручну і сподіваєшся, що обидва джерела залишаться синхронізованими. Не залишаться.

Читання цін напряму з метаданих товару WooCommerce

Baza Booking Calendar йде в протилежному напрямку. Замість того щоб зберігати власну ізольовану ціну, він може підтягнути ціну з будь-якого метаполя WordPress, прикріпленого до сервісу — включно зі стандартним полем WooCommerce _regular_price, яке є в кожному товарі.

Як увімкнути ціноутворення з власних метаданих

У налаштуваннях сервісу увімкни Display the price from the custom meta data і вкажи мета-ключ, з якого потрібно читати ціну. Для стандартних товарів WooCommerce це _regular_price. Для ціни зі знижкою — _sale_price. Для поля ACF з назвою «hourly_rate» — просто hourly_rate, тобто та назва, яку ти задав при створенні поля.

Налаштування сервісу Baza Booking Calendar — поле ціни з власних метаданих

Після збереження календар бронювання автоматично показує ціну з цього метаполя. Змінюєш ціну товару в WooCommerce — при наступному завантаженні сторінки календар відображає оновлену ціну. Жодних синхронізацій, вебхуків, ручних дій.

Є також поле Final Price, яке додає відсотковий коефіцієнт поверх значення з метаполя. Зручно, якщо товар WooCommerce відображає базову вартість, а бронювальний сервіс має додаткову націнку.

Які джерела цін підтримуються

  • Звичайна ціна WooCommerce — мета-ключ _regular_price
  • Ціна зі знижкою WooCommerce — мета-ключ _sale_price
  • Числове або текстове поле ACF — назва поля, яку ти задав в ACF (не ключ field_, а саме назва)
  • Будь-які власні метадані — з теми, іншого плагіна, власного типу запису, будь-що збережене через update_post_meta()

Мінімальний час бронювання з метаданих — та сама логіка

Та сама логіка працює і для мінімальної тривалості бронювання. Замість того щоб прописувати кількість годин для кожного сервісу прямо в плагіні, ти вказуєш на метаполе, де це значення вже зберігається окремо для кожного сервісу.

Увімкни Display the minimum number of hours or time slots from custom metadata і вкажи мета-ключ — наприклад _minimum_amount або той, що використовуєш. Календар автоматично дотримуватиметься цього мінімуму, і він буде різним для кожного сервісу залежно від того, що зберігається в полі.

Це справді корисно коли:

  • Різні сервіси мають різну мінімальну тривалість, і ти хочеш щоб редактори керували нею через ACF без заходу в налаштування плагіна
  • Мінімальний час бронювання надходить із зовнішньої системи, синхронізованої в метаполя WordPress
  • У тебе 20+ сервісів, і думка про те, щоб налаштовувати мінімуми по одному в плагіні бронювання, не викликає ентузіазму

Реальні кейси, де це справді має значення

Фотостудії та знімальні простори

Фотостудія здає в оренду три зали за різними погодинними тарифами — всі оформлені як товари WooCommerce. Baza Booking Calendar читає _regular_price з кожного товару. Менеджер студії змінює ціну в WooCommerce — вона одразу з’являється у формі бронювання. Жодного другого кроку.

Оренда обладнання з прайсами в ACF

Компанія з оренди обладнання зберігає погодинні тарифи та мінімальну тривалість оренди в полях ACF для кожної позиції. Календар бронювання читає обидва поля напряму. Окремо налаштовувати кожну позицію в плагіні не потрібно.

Коворкінги з великою кількістю приміщень

Коворкінг керує 15 кімнатами у WooCommerce. З одним мета-ключем, налаштованим у Baza Booking Calendar, всі 15 сервісів підтягують ціни автоматично. Налаштувати 15 сервісів окремо в звичайному плагіні бронювання — це година роботи. Тут — хвилина.

Чим це відрізняється від інших плагінів бронювання WooCommerce

WooCommerce Bookings від Woo, YITH Bookings та Bookings for WooCommerce від PluginHive — всі керують цінами всередині себе. Вбудованого способу підтягнути ціни з метаполів товарів WooCommerce або полів ACF немає. Ти вводиш ціни в налаштуваннях плагіна бронювання окремо від того місця, де вони вже зберігаються на сайті.

Baza Booking Calendar створювався для сайтів, де вже є структура даних — товари WooCommerce, поля ACF, власні типи записів — і потрібен шар бронювання, який працює з цією структурою, а не паралельно до неї.

Налаштування за 3 кроки

  1. Відкрий будь-який сервіс у Baza Booking Calendar і перейди до Settings
  2. Увімкни Display the price from the custom meta data і вкажи мета-ключ (наприклад _regular_price для WooCommerce або назву поля ACF)
  3. За потреби увімкни Display the minimum number of hours from custom metadata і вкажи мета-ключ для мінімальної тривалості

Після цього обидва значення читаються з наявних даних. Оновлюєш джерело — календар підхоплює зміни.

Часті запитання

Мета-ключ _regular_price зберігається на рівні товару. Для варіативних товарів вкажи мета-ключ конкретної варіації або використай поле ACF, яке зберігає зведену ціну для бронювання.

Так. Поле Final Price приймає відсоткову надбавку, яка автоматично застосовується поверх ціни з метаполя.

Календар повертається до ціни, налаштованої безпосередньо в параметрах сервісу. Нічого не ламається — запасний варіант завжди безпечний.

Так. ACF зберігає значення як стандартні метадані WordPress. Використовуй назву поля ACF — не ключ field_ — як мета-ключ у налаштуваннях Baza Booking Calendar.