Описание
Vachr Краткосрочное бронирование аренды — это идеальное универсальное решение для бронирования и управления для WordPress, разработанное специально для владельцев и менеджеров недвижимости, которым необходим полный контроль без каких-либо сложностей. Он превращает ваш сайт WordPress в профессиональную платформу для аренды квартир, домов для отдыха или комнат, предлагая все необходимое для легкого управления недвижимостью в одном месте.
Видеоурок: https://www.youtube.com/watch?v=ss2JD-JexpM
Посмотрите это видео, чтобы узнать, как управлять системой и использовать ее.
Этот плагин представляет собой полноценную платформу, которая обрабатывает все: от первоначального бронирования до регистрации гостей. Он имеет очень гибкий механизм ценообразования для создания комплексных скидок и сезонных ставок, полностью настраиваемые регистрационные формы с настраиваемыми полями, а также возможность предлагать дополнительные услуги по собственным ценам. Вся система переводима и позволяет вам настроить внешний вид ваших форм так, чтобы они идеально соответствовали бренду вашего веб-сайта.
Использование этого плагина совершенно бесплатно. Однако, если он оказался вам полезен и вы хотели бы поддержать его дальнейшую разработку, мы будем очень признательны за любое, даже самое скромное пожертвование (даже всего в несколько евро). Ваша поддержка поможет мне реализовать новые функции и усовершенствования. вы сможете управлять неограниченным кол-вом квартир, весь интерфейс полностью переводим, а также доступны все необходимые инструменты без каких-либо ограничений. Я сам пользуюсь этим плагином и могу лично поручиться за его надежность и эффективность.
Need help with setup? I offer one-time WordPress setup for short-term rentals, including connection to Booking.com, Airbnb, and more for 100 EUR, plus optional yearly light support for 20 EUR.
Ключевые преимущества
- Ультимативный универсальный инструмент: Управляйте всем: от бронирования и ценообразования до регистрации гостей и индивидуальных услуг в одном интуитивно понятном интерфейсе.
- Гибкие скидки и усиление; Цены: Создавайте расширенные сезонные цены, тарифы выходного дня и динамические скидки в зависимости от продолжительности пребывания или конкретных условий.
- Rental Season Control: Close apartments for exact date ranges, recurring months, or recurring day ranges when the property is not available.
- Online Payments & Flexible Checkout: Accept online card payments via Stripe or Mollie, and optionally enable bank transfer or cash payment methods.
- Invoices & Transactions: Keep payment records, invoice numbers, billing details, payment status, and paid timestamps connected to each booking.
- Пользовательские регистрационные формы: Создайте свои собственные регистрационные формы с настраиваемыми полями, чтобы собирать именно те данные о гостях, которые вам нужны.
- Guest Registration Matching: Link guest registrations to bookings, review unpaired records, and correct the apartment or booking assignment from the admin panel.
- Пользовательские услуги с ценами: Предлагайте и управляйте дополнительными услугами (например, уборкой, завтраком или прокатом велосипедов) с собственными настраиваемыми ценами.
- Translatable Apartment Amenities: Manage a reusable amenities catalog (Wi-Fi, Netflix, parking, wellness, kitchen equipment, safety items, and more) and assign amenities per apartment.
- Multilingual Apartment Content: Manage reusable templates for apartment descriptions, amenities, and arrival instructions, with per-apartment overrides.
- Automated Arrival Instructions: Send arrival instructions to confirmed guests a configurable number of days before check-in.
- Staff Access Rules: Send limited booking or registration details to cleaners and staff, and expose the same limited data through a password-protected page shortcode.
- Полный визуальный контроль: Легко настройте внешний вид календарей и форм бронирования в соответствии с дизайном вашего сайта.
- Двусторонняя интеграция iCal: Автоматическая синхронизация с крупными туристическими агентствами (Airbnb, Booking.com, VRBO) для устранения риска перебронирования.
- Полностью переводимый: Готов для иностранных гостей с многоязычной поддержкой и простым управлением переводом.
- Легкий и усиленный; Быстро: Оптимизирован для производительности, чтобы ваш сайт оставался быстрым для посетителей.
Скриншоты

Календарь доступности фронтенда. 
Форма бронирования — контактная информация гостя. 
Форма бронирования — обзор услуг и цен. 
Администратор — управление и настройки объекта. 
Администратор — настройки тарифов и ценообразования. 
Администратор — настройка служб для конкретной квартиры. 
Администратор — обзор бронирований с веб-сайта и внешних каналов (Booking.com, Airbnb и т. д.). 
Администратор — Настройка внешнего вида календаря и форм. 
Администратор — управление регистрацией гостей для учета туристических налогов. 
Администратор — расширенные скидки и сезонные правила ценообразования. 
Администратор — настройки двусторонней синхронизации iCal для внешних OTA. 
Администратор — глобальное управление услугами и удобствами. 
Публичная форма регистрации гостей для сбора данных о туристическом налоге.
Установка
Видеоурок: https://www.youtube.com/watch?v=ss2JD-JexpM
Посмотрите это видео, чтобы узнать, как управлять системой и использовать ее.
- Загрузите файлы плагина в каталог
/wp-content/plugins/vachr-short-term-rental-reservationsили установите плагин напрямую через экран плагинов WordPress. - Активируйте плагин через экран «Плагины» в WordPress.
- Перейдите в меню «Апартаменты», чтобы создать свою первую арендуемую квартиру.
- Используйте предоставленные короткие коды для отображения формы бронирования или календаря на ваших страницах.
Часто задаваемые вопросы
-
Как отобразить форму бронирования?
-
Используйте короткий код
[vstrb_booking_form unit="YOUR_ID"].Дополнительные параметры:
months="N"— number of calendar months to display (default:1).grid="N"— number of month columns in the calendar grid (default:1).currency="CODE"— currency code used in the price breakdown (default:EUR).language="CODE"— two-letter language code (e.g.cs,de,en) used for services, contact field labels, and the price quote. If omitted, the language of the current page (reflected in the<html lang>attribute, set automatically by multilingual plugins) is used; the visitor’s browser language serves as a last resort fallback.enable_stripe="1"— show card payment via Stripe. Configure Stripe keys and webhook secret in Apartments -> Settings -> Payments & Invoices.enable_mollie="1"— show card payment via Mollie. Configure the Mollie API key and use the displayed Mollie webhook URL in Apartments -> Settings -> Payments & Invoices.enable_bank_transfer="1"— show bank transfer payment. Configure default bank instructions in Apartments -> Settings -> Payments & Invoices, or translated per-apartment instructions in Bookings -> Apartment Content.enable_cash="1"— show cash payment.
Пример:
[vstrb_booking_form unit="YOUR_ID" language="de"]Payment example with Mollie and bank transfer:
[vstrb_booking_form unit=»YOUR_ID» enable_mollie=»1″ enable_bank_transfer=»1″ enable_cash=»1″]Payment example with all payment methods:
[vstrb_booking_form unit=»YOUR_ID» enable_stripe=»1″ enable_mollie=»1″ enable_bank_transfer=»1″ enable_cash=»1″] -
How do I enable Mollie payments?
-
- Go to Apartments -> Settings -> Payments & Invoices.
- Enter your Mollie API key (
test_...orlive_...). - Copy the displayed Mollie Webhook URL into your Mollie dashboard webhook settings.
- Add
enable_mollie="1"to your booking form shortcode.
Example:
[vstrb_booking_form unit="YOUR_ID" enable_mollie="1"] -
Как отобразить календарь доступности?
-
Используйте короткий код
[vstrb_availability_calendar unit="YOUR_ID" months="3"]. -
Как мне собрать регистрационные данные гостей (например, от гостей Booking.com)?
-
Use the shortcode
[vstrb_guest_registration unit="YOUR_ID"]on any page. Share the link with your guest — they fill in their personal details without needing to register. Submitted data is saved to the database and sent by email to both the admin and the guest. You can review all registrations under Bookings -> Guest Registrations in the admin panel.If the registration link contains a specific apartment (
unit), that apartment is kept as the primary assignment. The plugin then tries to link the registration to a matching booking for the same apartment and stay dates. When the apartment is not known and there is exactly one matching booking for the submitted stay dates, the registration can be linked automatically to that booking. If the match is not clear, you can manually pair or unpair the registration group in the admin panel.The Guest Registrations admin screen includes filters for apartment, booking source, stay date range, guest/email/reference search, booking ID, and linked or unlinked registration groups. You can also change the apartment for a whole registration group when a guest submitted the form under the wrong apartment.
Дополнительные параметры:
title="TEXT"— custom heading displayed above the form. If omitted, the apartment name is used as the heading.language="LOCALE"— locale code (e.g.cs_CZ,de_DE,en_US) to render the form labels in a specific language. If omitted, the current site language is used.param="accommodation"— resolve the apartment from a URL parameter instead of a fixedunitID. This is useful for Booking.com links with[PROPERTY_NAME].match="contains"— allow one unique partial match when Booking.com sends a longer or shorter property name.fallback="TEXT"— text shown when no unique apartment is matched.
Example:
[vstrb_guest_registration unit="YOUR_ID" title="Apartment Modry Dum" language="cs_CZ"]Booking.com example page shortcode:
[vstrb_guest_registration param=»accommodation» language=»en_US» fallback=»Accommodation not found. Please contact us.»]Booking.com message URL:
https://example.com/accommodation-registration-tourist-tax/?accommodation=[PROPERTY_NAME]&source=booking_comAdd the exact Booking.com property name to External accommodation names / aliases in the matching apartment editor. One alias per line is supported. Matching ignores case, accents, and extra punctuation.
-
How do I manage multilingual apartment descriptions, amenities, arrival instructions, and bank transfer instructions?
-
Create reusable content templates under Bookings -> Apartment Content. Each template can contain translated apartment descriptions, amenities text, arrival instructions, and bank transfer payment instructions for the languages configured in Bookings -> Settings.
Then open an apartment and use the Guest-facing Apartment Content section in the apartment details. You can assign a template and optionally override any language directly for that apartment.
Template texts support placeholders in double braces. Built-in placeholders include:
{{apartment_name}}{{apartment_id}}{{site_name}}{{checkin_time}}{{checkout_time}}{{capacity}}{{booking_id}}— available in arrival instruction emails.{{guest_name}}— available in arrival instruction emails.{{date_from}}and{{date_to}}— available in arrival instruction emails.{{invoice_number}},{{payment_amount}}, and{{payment_currency}}— available in bank transfer instructions after booking submission.
Bank transfer callbacks use the generic Bank Notify URL from settings. The endpoint accepts JSON, form-encoded payloads, and simple XML bodies. It recognizes common wrapper keys such as
transaction,payment,data,entry, oraccountStatement, and common aliases:- token:
token,webhook_token,secret,shared_secret,api_key, or theX-VSTRB-Token,X-Webhook-Token, orAuthorization: Bearer ...header. - booking:
booking_id,bookingId,reservation_id, ororder_id. - invoice:
invoice_number,invoiceNumber,invoice_no,invoice, orbill_number. - reference / variable symbol:
reference,payment_reference,variable_symbol,variableSymbol,vs,transaction_id,bank_reference,endToEndId,remittanceInformation,message,note, oruserIdentification. - amount and currency:
amount,value,transaction_amount,castka,sum,currency,ccy, ormena.
The plugin matches payments by booking ID first, then invoice number, then exact reference/variable-symbol match against stored payment references or invoice numbers. It does not connect directly to a specific bank API by itself; a bank export, external automation, or middleware can call the endpoint in one of the supported shapes.
You can also define custom placeholders in the apartment editor, for example
door_pin,wifi_password, orparking_note. Custom placeholders can have one global value or language-specific values. Use them as{{door_pin}}or with a fallback like{{door_pin|provided before arrival}}.Example: door PIN and Wi-Fi password
- Open Apartments -> Edit Apartment.
- In Guest-facing Apartment Content -> Template Placeholders, add:
- Key:
door_pin - Global value:
123456
- Key:
- Add another placeholder:
- Key:
wifi_password - Global value:
MySecureWifiPassword
- Key:
-
Use these placeholders in an arrival instruction template:
Your apartment is {{apartment_name}}.
Check-in is possible from {{checkin_time}}.
The entrance door PIN is {{door_pin}}.
The Wi-Fi password is {{wifi_password}}.
Example: translated custom placeholder
If a placeholder contains text that should be translated, fill the language-specific values:
- Key:
parking_note - Global value:
Parking is available behind the house. - CS value:
Parkovani je mozne za domem. - DE value:
Parken ist hinter dem Haus moeglich.
Then use it in a template:
{{parking_note}}When the content is displayed or emailed in Czech, the CS value is used. In German, the DE value is used. If no matching language value exists, the global value is used.
Example: fallback text when a value is missing
Door PIN: {{door_pin|provided before arrival}}If
door_pinis empty, the guest will seeprovided before arrivalinstead of a blank value.You can display the saved content with these shortcodes:
[vstrb_unit_description unit="YOUR_ID" language="cs"][vstrb_unit_amenity_list unit="YOUR_ID" language="cs"][vstrb_unit_arrival_instructions unit="YOUR_ID" language="cs"][vstrb_unit_arrival_instructions_by_code param="unit_code" language="cs"][vstrb_unit_arrival_instructions_by_name param="accommodation" language="cs"][vstrb_unit_arrival_instructions_by_reservation]
If the
languageattribute is omitted, the site language is used. Apartment-specific text has priority over the selected template.To show arrival instructions without exposing an internal apartment ID, prefer
[vstrb_unit_arrival_instructions_by_code]. Set a Public apartment code in the apartment editor and put that code into the external channel link. This is more reliable than matching a name sent by Booking.com, Airbnb, or another channel.Example page shortcode:
[vstrb_unit_arrival_instructions_by_code param=»unit_code» language=»cs» fallback=»Accommodation not found. Please contact us.»]Example guest URL:
https://example.com/arrival/?unit_code=blue-houseIf an external channel can only send the accommodation name, use
[vstrb_unit_arrival_instructions_by_name]and add the exact channel-specific names to External accommodation names / aliases in the apartment editor. The shortcode matches the URL value against the apartment title and these aliases. Matching ignores case, accents, and extra punctuation.Дополнительные параметры:
param="NAME"— GET parameter containing the public code or accommodation name. Defaults:unit_codefor the code shortcode,unit_namefor the name shortcode.code="TEXT"— use a fixed public apartment code instead of a GET parameter, useful for testing.name="TEXT"— use a fixed accommodation name or alias instead of a GET parameter, useful for testing.match="exact"— default exact normalized title match.match="contains"— name shortcode only: allow one unique partial match when an external channel sends a longer or shorter name.show_title="1"— show the matched apartment title above the instructions.fallback="TEXT"— text shown when no unique apartment is matched.
-
How do automated arrival instruction emails work?
-
In the apartment editor, enable Email arrival instructions automatically before check-in and set Send days before arrival.
The daily WordPress cron checks confirmed bookings with a customer email address. If arrival instructions exist for the apartment, the guest receives an email with the apartment description, amenities, and arrival instructions in the saved booking language when available. Each booking is marked after sending so the instructions are not sent repeatedly.
To display arrival instructions by matching a guest stay, use:
[vstrb_unit_arrival_instructions_by_reservation]The shortcode reads arrival date, departure date, first name, and last name from URL parameters. It accepts ISO dates and common local numeric date formats such as
2026-06-01,1.6.2026,01/06/2026, and06/01/2026; ambiguous formats are tried against stored reservations without converting through UTC. It first tries to find one apartment by stay dates only. If multiple apartments match the same dates, it narrows the result by both guest names, then by last name only, then by first name only. Name matching ignores accents and letter case. If no unique match is found, it displays the first apartment with available instructions in alphabetical order.Example page shortcode:
[vstrb_unit_arrival_instructions_by_reservation date_from_param=»checkin» date_to_param=»checkout» first_name_param=»guest_first_name» last_name_param=»guest_last_name» language=»cs» available_days_before=»1″ unavailable_text=»Arrival instructions are not available yet.» fallback=»Arrival instructions are not available. Please contact us.»]Example guest URL, password:
testtest:
https://vachr.cz/apartment-1-demo-pin/?checkin=2026-06-23&checkout=25.6.2026&guest_first_name=Jan&guest_last_name=NovakДополнительные параметры:
unit="ID"— limit matching to one apartment, useful when date combinations may repeat across apartments.date_from_param="date_from"— URL parameter containing arrival.date_to_param="date_to"— URL parameter containing departure.first_name_param="first_name"— URL parameter containing first name.last_name_param="last_name"— URL parameter containing last name.date_from="YYYY-MM-DD"— fixed arrival date instead of a URL parameter.date_to="YYYY-MM-DD"— fixed departure date instead of a URL parameter.first_name="TEXT"— fixed first name instead of a URL parameter.last_name="TEXT"— fixed last name instead of a URL parameter.language="cs"— language used for apartment instructions.show_title="1"— show the matched or fallback apartment title above the instructions.fallback="TEXT"— text shown when no apartment has arrival instructions.available_days_before="1"— how many days before arrival the instructions may be shown. Default:1. Use0to show them only on the arrival day.unavailable_text="TEXT"— text shown when the guest opens the page too early. If omitted, a translated default message is shown.
-
Могу ли я предварительно заполнить форму регистрации гостя по URL-адресу?
-
Да. Короткий код
[vstrb_guest_registration]считывает следующие параметры GET и предварительно заполняет соответствующие поля формы:date_from— check-in date (format:YYYY-MM-DD)date_to— check-out date (format:YYYY-MM-DD)first_name— guest’s first name (pre-fills the first guest block)last_name— guest’s last name (pre-fills the first guest block)source— booking source; accepted values:booking_com,airbnb,vrbo,expedia,direct,otherbooking_ref— booking reference numberaccommodation— external accommodation name used to resolve the apartment when[vstrb_guest_registration param="accommodation"]is used
Пример URL-адреса:
https://bayernrelax.eu/en/accommodation-instructions/?accommodation=[PROPERTY_NAME]&date_from=2026-07-01&date_to=2026-07-07&first_name=John&last_name=Doe&source=booking_com&booking_ref=1234567890Это полезно при отправке ссылки на регистрацию прямо из электронного письма с подтверждением бронирования.
-
How do admin price offers work for imported reservations?
-
Open Bookings, click Offer on any reservation, and use the Price offer panel. The plugin calculates the price from the current reservation unit, dates, guest count, services, seasonal rates, discounts, surcharges, and refundable deposit settings.
You can add a one-time manual discount as a fixed amount or percentage. The generated result is saved back to the booking total and into the booking price breakdown, so notification emails and admin details show the same final amount.
For imported iCal reservations from e-chalupy.cz, Booking.com, Airbnb, and similar channels, the guest email is often not stored as the booking customer email. In that case you can enter any recipient in Send offer to email. If the iCal description contains an email address, the field is prefilled automatically.
Each offer also has a private public link in Public price offer link. Copy that URL and send it manually through any channel. The link uses a random token and displays only the price offer page for that booking.
The email sent from the price offer panel includes the offer summary and the same public price offer link.
-
How do I show limited booking details to cleaners or staff?
-
Go to Apartments -> Settings -> Notifications and add one staff access rule per line:
cleaner@example.com|unit,dates,guests|departure|cs_CZ|1 reception@example.com|unit,dates,guests,contact|arrival|de_DE|3 manager@example.com|all|all|en_US|1The format is
email|fields|events|language|days_before.The fields part controls visible information in staff emails and the staff frontend shortcode. The events part controls which staff emails are sent. The optional language part controls the language of staff emails for that address; use locale codes such as
cs_CZ,de_DE, oren_US. If it is omitted, the site language is used. The optional days_before part controls how many days before an arrival or departure reminder is sent. Use0for the same day,1for one day before,3for three days before, etc. If you want days_before without a language, use eitheremail|fields|events||3or the shorthandemail|fields|events|3.Available fields:
unit— apartment name.dates— stay dates.guests— guest count.status— booking status.source— booking source.customer— customer name.contact— customer email and phone.price— booking total and currency.note— booking note.booking_reference— external booking reference on guest registrations.guest_names— names submitted in guest registrations.all— allow all fields.
Available events:
new_booking— email when a new booking is created.registration— email when guest registration details are submitted.arrival— email before check-in, using the rule’s days_before value.departure— email before checkout, using the rule’s days_before value.ical_cancelled— email when a future imported iCal reservation disappears from its source feed and is treated as cancelled.all— receive all staff emails.
For a cleaner who should not see prices or guest contact details and should only receive checkout reminders, use:
cleaner@example.com|unit,dates,guests|departure|cs_CZ|1For a reception or handover person who should only receive arrival reminders, use:
reception@example.com|unit,dates,guests,contact|arrival|de_DE|3Then create a WordPress page or post, optionally protect it with a WordPress password, and add:
[vstrb_staff_bookings email="cleaner@example.com" days="30"]Optional shortcode parameters:
email="EMAIL"— staff rule to use.days="N"— number of upcoming days to display (default:30).unit="ID"— limit to one apartment.limit="N"— maximum number of bookings (default:50).include_registrations="0"— hide guest registration groups.status="all"— include cancelled and blocked bookings too.
Отзывы
Нет отзывов об этом плагине.
Участники и разработчики
«Vachr Short-Term Rental Reservations» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:
Участники«Vachr Short-Term Rental Reservations» переведён на 2 языка. Благодарим переводчиков за их работу.
Перевести «Vachr Short-Term Rental Reservations» на ваш язык.
Заинтересованы в разработке?
Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.
Журнал изменений
1.9.26
- Fixed staff arrival/departure reminders for imported iCal bookings saved as blocked reservations.
- Added an admin test form for sending staff notification emails from a single rule string.
1.9.25
- Fixed guest registration booking matching so registrations can be linked to the only matching booking by stay dates even when the submitted apartment is not the correct one.
- Added admin controls to change the apartment for a guest registration group and pair it with bookings from other apartments.
- Added Guest Registrations admin filters for apartment, source, stay dates, guest/email/reference search, booking ID, and linked/unlinked status.
1.9.24
- feat: Add logic to skip importing unavailable Airbnb events
- feat: Update invoice number format to remove prefix and improve consistency
- feat: Remove price offer URL from email and update translations for payment details inclusion
- feat: Add invoice number generation and payment details inclusion for price offers
- chore: Bump version to 1.9.21 in readme and main plugin file
1.9.20
- Fixed shortcode language handling so booking form labels, calendar labels, services, price breakdowns, and frontend messages consistently follow the
languageattribute. - Fixed admin service lists to display service name translations for the current admin language, with fallback translations for default seeded services.
- Fixed customer email language handling and plain-text price formatting so localized messages do not mix languages or show escaped
entities.
1.9.19
- Added
[vstrb_unit_arrival_instructions_by_reservation]for displaying apartment arrival instructions by matching stay dates and guest name against bookings and linked guest registrations. - Added local numeric date parsing for Booking.com-style URL parameters without UTC day shifts.
- Added cascaded matching: dates first, then both guest names, then last name, then first name, with accent-insensitive and case-insensitive name comparison.
- Added
available_days_beforeandunavailable_textcontrols for reservation-matched arrival instructions. - Added alphabetical fallback to the first apartment with arrival instructions when no unique reservation or registration match is found.
1.9.18
- Reserved release.
1.9.17
- Fixed iCal cleanup for e-chalupy imports stored under legacy provider source variants.
- Removed stale imported blocks whose stay has not ended yet when they disappear from the source feed.
- Improved the manual iCal import page so import results and feed timestamps are shown immediately after running an import.
1.9.16
- Fixed iCal cleanup for legacy imported blocks stored as
ical_otherafter provider normalization.
1.9.15
- Added a translatable apartment amenities catalog with per-apartment amenity selection.
- Expanded the default amenities catalog with TV, streaming platforms, game consoles, balcony, terrace, pool, sauna, parking, accessibility, family, kitchen, bathroom, safety, and outdoor equipment.
- Added
[vstrb_unit_amenity_list]for displaying translated apartment amenities. - Removed the legacy
[vstrb_unit_amenities]shortcode from the public shortcode list.
1.9.14
- Added email notifications when a future imported iCal reservation disappears from the source feed and is treated as cancelled.
- Added the
ical_cancelledstaff notification event and updated bundled translations.
1.9.13
- Added manual recipient email support for admin price offers, useful for imported iCal reservations where the channel email is not saved as the customer email.
- Added private public price offer links with token-based access so admins can copy and send a standalone offer page.
- Expanded readme documentation for admin price offers, imported reservations, manual discounts, email sending, and public offer links.
1.9.12
- Added admin price offers for reservations, including automatic price generation, one-time manual discounts, saving the offer total, and emailing the offer to the guest.
1.9.10
- Improved WordPress.org Plugin Check compliance for staff booking shortcodes, translation comments, input sanitization, and plugin textdomain loading.
1.9.9
- Preserved URL query parameters after submitting a WordPress password-protected page password.
1.9.8
- Added
[vstrb_unit_arrival_instructions_by_code]shortcode for showing arrival instructions via a stable public apartment code. - Added external accommodation name aliases for
[vstrb_unit_arrival_instructions_by_name]. - Added
[vstrb_guest_registration param="accommodation"]support for resolving a Booking.com[PROPERTY_NAME]URL parameter to a WordPress apartment title or alias.
1.9.7
- Added
[vstrb_unit_arrival_instructions_by_name]shortcode for showing arrival instructions by matching an accommodation name from a URL parameter to the apartment title.
1.9.6
- Added optional per-staff days-before scheduling for arrival and departure reminders using the
email|fields|events|language|days_beforerule format. - Staff reminder send tracking is now stored per event and per email address so different staff rules can use different reminder timing.
1.9.5
- Added optional per-staff email language selection using the
email|fields|events|languagerule format. - Updated bundled translations and documentation for staff notification language settings.
1.9.4
- Added per-staff notification event selection so each email can receive only new booking, registration, arrival, or departure notices.
- Added staff arrival reminders one day before check-in.
1.9.3
- Added automatic staff departure reminders one day before checkout, using the same per-email field permissions.
1.9.2
- Added staff access rules for per-email field permissions in booking and guest registration notifications.
- Added
[vstrb_staff_bookings]shortcode for password-protected staff pages that respect the same per-email permissions. - Added Czech and bundled translation updates for staff access settings and labels.
1.9.1
- Added apartment cloning — duplicate any apartment as a draft directly from the admin list.
1.9.0
- Added multilingual bank transfer instructions through Apartment Content templates and per-apartment overrides.
- Added tolerant bank payment notification matching for common JSON, form, and simple XML payload shapes.
- Added support for bank payment placeholders such as
{{invoice_number}},{{payment_amount}}, and{{payment_currency}}.
1.8.3
- Improved booking notification emails with the same detailed price breakdown shown in the frontend booking form.
- Stored a booking price snapshot for new direct bookings, including nights, accommodation, services, discounts, surcharges, refundable deposit, and final total.
- Filtered internal booking/payment/invoice metadata out of the custom contact fields section in notification emails.
1.8.2
- Added template placeholder support for multilingual apartment content and arrival instruction emails.
- Added built-in placeholders for apartment details, site name, booking details, guest name, and stay dates.
- Added apartment-level custom placeholders with global and language-specific values, useful for door PINs, Wi-Fi passwords, parking notes, and similar reusable details.
1.8.1
- Added reusable multilingual apartment content templates for descriptions, amenities, and arrival instructions.
- Added apartment-level multilingual overrides for descriptions, amenities, and arrival instructions.
- Added shortcodes for displaying apartment description, amenities, and arrival instructions on frontend pages.
- Added optional automated arrival instruction emails for confirmed bookings, configurable per apartment by number of days before check-in.
- Stored the booking form language with new direct bookings so arrival instruction emails can use the guest’s language when available.
1.8.0
- Added extended card payment diagnostics for Stripe and Mollie payments, including gateway status, gateway payment status, payment method type, safe card details, and provider timestamps where available.
- Displayed extended payment details in the bookings list and Invoices & Transactions admin page.
1.7.9
- Fixed Mollie webhook handling for webhook test events such as
hook.ping, returning HTTP 200 instead of treating event IDs as payment IDs.
1.7.8
- Fixed Mollie webhook route diagnostics by allowing GET checks on the webhook URL while keeping POST as the payment update handler.
- Removed duplicate REST route registration hook from the REST include file.
1.7.7
- Added weekday-based Rates & Discounts validity so prices, discounts, and surcharges can apply on selected days of the week.
- Added annual date/range validity for Rates & Discounts using yearless dates such as
1.5.,8.5., or24.12.-26.12.that repeat every year.
1.7.6
- Fixed weekend pricing rules so weekend discounts and surcharges apply only to Friday-to-Saturday and Saturday-to-Sunday nights, not Sunday-to-Monday.
- Updated the Rates & Discounts admin label to clarify that weekend pricing means weekend nights only.
1.7.5
- Fixed closed days to display as Closed/Zavřeno instead of Occupied/Obsazeno in the frontend calendar.
- Fixed closed-period calendar selection so closed days cannot be selected in the booking calendar.
- Added apartment closed-period rules for exact date ranges, recurring closed months, and recurring day ranges.
- Closed periods now appear as unavailable in the frontend calendar and block quote/booking submissions.
1.7.4
- Added global Rates & Discounts rules for all apartments, with apartment-specific matching rules taking precedence.
- Added rate enable/disable controls, cloning for rate groups, and an Always validity option.
1.7.3
- Fixed Rates & Discounts editing so updating an existing rate no longer duplicates currency values or applies the same discount multiple times.
- Added automatic cleanup for duplicate rate rows created by previous edits.
- Added setting Include Refundable Deposit in Online Payment to control whether refundable deposit is charged during online card payment.
- Improved stay adjustment flow and corrected refundable deposit placement in total calculations.
- Updated and standardized translation strings/quote formatting across all bundled language files.
1.7.2
- Added detailed discount and surcharge breakdown in frontend price summary, including full i18n support.
- Refactored pricing adjustment logic to clearly separate per-day and per-stay adjustments.
- Improved rates engine support for fixed amount and percentage discounts/surcharges applied per stay.
1.7.1
- Added refundable deposit support to booking flow, REST responses, and frontend quote display.
- Added/updated localization strings for refundable deposit labels across bundled language packs.
1.7.0
- Enhanced pricing calculations and discount breakdown handling in quote computation.
1.6.2
- Fixed months translations in admin rates.
- Fixed sanitization/unslashing in Rates admin save handler for
apply_mode,months_of_year,day_of_year_from, andday_of_year_to. - Fixed escaped output in Rates admin list (
date_scope). - Normalized line endings in
includes/shortcodes.phpto avoid mixed line-ending warnings.
1.6.1
- Improved calendar month navigation usability: previous/next month names are now displayed next to left/right arrow buttons.
- Fixed multi-month calendar navigation hint so the next arrow shows the month after the last visible month (e.g. with 3 visible months, the label points to month +4 from the first visible month).
- Added new recurring temporal scope modes for Rates & Discounts: Specific dates, Selected months every year, and Day-of-year range every year (1-366, including wrap-around ranges).
- Extended pricing engine matching to support month-based and day-of-year recurring rate application without yearly date reconfiguration.
- Added admin validation for new recurring modes (at least one month required, valid day-of-year range inputs).
- Fixed admin form validation issue (An invalid form control with name=’date_to’ is not focusable) when switching from date mode to recurring modes.
- Added localization strings for all newly introduced Rates & Discounts UI/error labels across all bundled language files.
- Fixed encoding inconsistencies in localization files that could display replacement characters in some editors/environments.
- Corrected missing diacritics and accented characters in multiple language packs (including cs_CZ, de_DE, es_ES, fr_FR, pl_PL, and pt_PT).
- Improved consistency of newly added payment and invoice translation strings across bundled .po files.
1.6.0
- Added online payments support with Stripe integration, including configurable Stripe keys, webhook secret, and optional success/cancel URLs.
- Added configurable payment methods in booking form shortcode: card (Stripe), bank transfer, and cash.
- Added payment return-state handling for successful/failed payment confirmations in the frontend booking flow.
- Added new Invoices & Transactions admin page for managing invoice and payment records.
- Added invoice editing tools in admin (status, number, amount, currency, paid timestamp, and billing fields).
- Added payment/invoice filtering in admin by status, method, and booking ID.
- Added one-click Mark Paid workflow with invoice matching and admin notices.
- Added optional auto-confirm booking behavior after successful payment matching.
- Extended settings with Payments & Invoices section, Stripe setup guide, bank transfer instructions, and callback token support.
- Added and updated localization strings for payment and invoice features across bundled language files.
1.5.5
- Extended guest registration form with optional billing details section (
Add Billing Detailsbutton). - Added billing fields storage for guest registration groups (
billing_name,company_id,vat_id, billing address). - Added
Edit contactaction in Bookings -> Guest Registrations to update shared contact and billing data for a whole registration group. - Added
Edit guestaction in registration detail rows to update individual guest identity/document/address fields. - Added
Print invoiceaction for registration groups with a one-click printable invoice page. - Extended Guest Registrations CSV export with billing columns.
- Added translation keys for all newly introduced billing/invoice/edit labels across all bundled language files and recompiled
.mofiles.
1.5.4
- Add offering details for WordPress setup
- Admin calendar booking form: CAPTCHA validation is now bypassed for users with
manage_optionsto preventcaptcha_invalidwhen creating bookings from wp-admin. - Admin calendar booking form: minimum stay restriction is no longer enforced for users with
manage_options, so admins can create manual short stays (e.g. 1 night) even if the apartment has a higher minimum.
1.5.3
- added missing translations
1.5.2
- фиксированный канал
- Исправлен предварительный просмотр календарной ночной цены для правильного использования сезонных ставок
replace(например,off_season) вместо постоянного возврата к базовой цене квартиры. - Исправлен предварительный просмотр календарной цены для сезонных тарифов с помощью
Min Nights > 1, поэтому ожидаемая сезонная ночная цена по-прежнему отображается в дневных ячейках. - Улучшена цепочка расчета ставок: теперь сначала применяется ставка
replace, а затем сверху применяется соответствующая ставка скидки/надбавки (например,1000с-10%теперь показывает900). - Подсветка скидок в календаре перенесена из глобальной настройки в управление по тарифам (
Highlight in calendar) в Rates & Скидки. - Добавлена недействительность версии кэша ставок при сохранении/удалении ставок, чтобы календарь немедленно отражал обновленные значения ставок.
- Исправлен приоритет правил для перекрывающихся ставок
replace: явные переопределения конечного окна дат (например, сентябрь/осень) теперь правильно имеют приоритет над широкими сезонными окнами, такими какoff_season. - Исправлена сортировка предварительного просмотра календаря, когда
Min Nightsигнорируется:min_nightsбольше не доминирует над порядком правил при расчете цен в дневных ячейках.
1.5.1
- Подвиг: Расширение функций экспорта iCal и улучшение локализации ценников.
- обновление: оптимизация макета и стиля ячеек календарного дня.
- Подвиг: Добавьте режим
cal_onlyдля точного расчета надбавок и скидок. - обновление: Упростите ссылки на плагины и добавьте улучшения стиля с помощью внешней ссылки.
1.5.0
- Added optional per-night price display directly in calendar day cells. Configure in General Settings -> Calendar Price Display (global default) or override per apartment in the apartment editor (Details metabox). Three modes: hidden (default), show nightly price, or show discount/surcharge delta only. For per-person pricing modes, the nightly price is calculated using the apartment’s configured capacity. Rates with a minimum stay requirement higher than 1 night are excluded from the calendar display.
- Добавлена поддержка минимальной цены для календарей и новые метки «от цены», чтобы уточнить отображаемый контекст цен.
- Добавлены настраиваемые параметры стиля для значков цен в календаре, включая цвета фона/текста значка, размер значка, цвет полосы скидок, цвет полосы дополнительных сборов, а также цвет/размер/стиль метки режима цены.
- Добавлены варианты оформления жирным шрифтом и курсивом для метки режима цен календаря.
- Добавлена поддержка различения значков скидок и надбавок при отрисовке календаря.
- Улучшено отображение разницы цен в календаре, а также улучшена видимость/читаемость значка.
- Добавлены строки локализации для настроек отображения цен в календаре.
- Добавлены строки локализации для ценовых меток во всех языковых файлах в комплекте.
1.4.9
- Исправлено отображение названий служб на неправильном языке при использовании многоязычного плагина (например, Polylang): конечные точки REST теперь правильно переключают локаль, используя полный код локали, разрешенный с помощью активного многоязычного плагина.
- Replaced static CAPTCHA (
2 + 3) with a server-signed dynamic math challenge (random addition or subtraction of small numbers). The correct answer is HMAC-signed with a 30-minute expiry — impossible to bypass by hardcoding the answer.
1.4.8
- Added
languageattribute to[vstrb_booking_form]shortcode — sets the locale for services, contact field labels, and price quote. Priority: shortcode attribute -> page language (<html lang>) -> visitor’s browser language. - Расширенные запросы API, включающие региональные данные для услуг, поля контактов и ценовое предложение.
1.4.7
- Добавлен новый видеоурок на YouTube.
1.4.6
- Исправлено отображение многомесячной календарной сетки в форме бронирования/календаре внешнего интерфейса.
- Атрибут короткого кода
gridтеперь последовательно контролирует количество столбцов месяцев (например,grid="1"= один столбец). - Макет контейнера календарного месяца переработан в CSS Grid для предсказуемого выравнивания месяца по точкам останова.
1.4.5
- Добавлен режим редактирования бронирования в списке администраторов Bookings.
- Внутренние бронирования теперь можно полностью редактировать (даты, данные гостя/контактные данные, статус, поля цен, примечания и т. д.).
- Импортированные бронирования iCal теперь защищены и позволяют редактировать только внутреннюю заметку.
- Обновление внутренних дат резервирования теперь безопасно восстанавливает блокировки занятых дней и обновляет кэш календаря.
- Добавлена привязка регистрации к бронированию для регистрации гостевых документов.
- Автоматическое сопряжение бронирований теперь выполняется при отправке регистрации гостя только в том случае, если обнаружено точное 100% совпадение.
- Добавлен пользовательский интерфейс ручного сопряжения/отключения для групп регистрации в Guest Registrations.
1.4.4
- Незначительные изменения
1.4.3
- Незначительные изменения
1.4.2
- Переработан вывод JavaScript в соответствии с лучшими практиками постановки в очередь WordPress: удалены встроенные теги
<script>из шаблонов PHP и перемещена логика вwp_add_inline_script(), прикрепленная к дескрипторам плагинов, поставленным в очередь. - Гарантированные ресурсы администратора загружаются не только на страницы подменю плагина, но также на экраны редактирования/списка
vstrb_unit(edit.php,post.php,post-new.php), где требуется плагин JS. - Удален ненужный вызов
load_plugin_textdomain()для загрузки перевода, размещенного на WordPress.org. - Сохранена обработка маршрута REST
permission_callbackявной и неизменной для предполагаемых общедоступных конечных точек. - Улучшена совместимость проверки плагинов за счет нормализации концов строк в основных файлах плагинов (
includes/shortcodes.php,includes/db.php,includes/admin.php,includes/cpt.php). - Переработана обработка массива CPT POST для использования вспомогательного доступа
filter_input(), что уменьшает количество ложноположительных предупреждений о одноразовом номере, сохраняя при этом проверку одноразового номера вsave_meta(). - Усиление безопасности: чтение запросов без очистки заменено на явную очистку/проверку в помощниках администратора и ввода CPT (
get_param_*,request_param_int,post_array, обработка флажков и обработка метасохранения). - Усиление безопасности: усиленная проверка полезных данных REST для формы JSON, дат (
YYYY-MM/YYYY-MM-DD), кодов валют, скалярных текстовых полей и адресов электронной почты перед обработкой или хранением. - Усиление безопасности: улучшено экранирование вывода сгенерированной разметки в администраторе/шорткодах (
wp_kses()с разрешенной картой разметки) и экранирование вывода условного класса CSS при рендеринге календаря. - Усиление безопасности: встроенные ресурсы очищаются перед постановкой в очередь (
wp_add_inline_script/wp_add_inline_style) для предотвращения небезопасного внедрения тегов. - Конечная точка экспорта iCal теперь возвращает правильный
WP_REST_Responseс заголовками календаря вместо прямого выводаecho. - Усиление уведомлений по электронной почте: проверьте адреса получателей с помощью
sanitize_email()+is_email()и очистите значения динамической сводки/метатекста. - Нормализованы окончания строк в дополнительных файлах, отмеченных проверкой плагинов (
includes/emails.php,includes/ical.php,includes/rest.php). - Синхронизированный тег
readme.txtStable с заголовком версии плагина (1.4.2).
1.4.0
- Project renamed from name Free Short-Term Rental Booking to Vachr Short-Term Rental Reservations
1.3.5
- В административной таблице регистрации гостей теперь группируются несколько гостей из одного и того же пребывания в одну свертываемую строку. Нажмите «Показать гостей», чтобы развернуть и просмотреть отдельные сведения о госте (имя, дата рождения, национальность, документ, адрес).
- Добавлено действие «Удалить группу», позволяющее одновременно удалить всех гостей, принадлежащих к одной регистрационной группе.
- Если при регистрации гостя не указана ссылка на бронирование, автоматически генерируется уникальная внутренняя ссылка (формат:
VSTRB-{unit}-{date}-{random}), гарантирующая, что гости, отправленные вместе, всегда будут правильно сгруппированы. - Исправлены предупреждения о неопределенных ключах массива при новых установках, когда визуальные параметры еще не настроены (
cal_date_size,cal_date_color,cal_lbl_size,cal_lbl_color,cal_h_size,cal_h_color,cal_h_align,frm_h_size,frm_h_color).
1.3.4
- Added
titleattribute to[vstrb_guest_registration]shortcode — allows setting a custom heading above the form. Defaults to the apartment name. - Added
languageattribute to[vstrb_guest_registration]shortcode — renders all form labels in the specified locale (e.g.cs_CZ,de_DE). Usesswitch_to_locale()/restore_current_locale()so the rest of the page is unaffected. - Обновлено руководство по короткому коду в списке администраторов квартир с документацией и примером для обоих новых атрибутов.
1.3.3
- Единственное поле «Постоянный адрес» в форме регистрации гостя заменено тремя отдельными полями: «Улица», «Город» и «Страна».
- В таблицу базы данных регистрации гостей добавлены столбцы
street,city,state; существующие установки переносятся автоматически. - Обновлена таблица регистрации гостей администратора, электронные письма с уведомлениями и переводы на все 11 языков соответственно.
1.3.2
- Расширенная форма регистрации гостя: добавлен раскрывающийся список «Источник бронирования» (Booking.com, Airbnb, VRBO, Expedia, Direct, Other) и поле «Номер бронирования».
- Form fields can be pre-filled via GET parameters (
date_from,date_to,first_name,last_name,source,booking_ref) — useful for linking directly from booking confirmation emails. - Источник и ссылка на бронирование хранятся в базе данных, отображаются в таблице «Регистрации гостей» администратора и включаются в электронные письма с уведомлениями администратора.
1.3.1
- Исправлен макет формы регистрации гостя: исправлен класс контейнера CSS, добавлены гибкие стили
vstrb-fieldи цвета уведомлений вfrontend.css. - Добавлены полные переводы функции регистрации гостей на все 11 поддерживаемых языков (cs_CZ, de_DE, es_ES, fr_FR, it_IT, ja, nl_NL, pl_PL, pt_PT, ru_RU, zh_CN).
1.3.0
- Added
[vstrb_guest_registration unit="ID"]shortcode — a standalone registration form for guests who book through external channels (e.g. Booking.com). No WordPress account required. - New database table
wp_vstrb_guest_registrationsstores: first name, last name, date of birth, permanent address, document type & number, nationality, accommodation dates, and email — linked to a specific apartment. - Отправленные регистрации вызывают автоматические уведомления по электронной почте как администратору, так и гостю.
- New admin page Bookings -> Guest Registrations with a filterable table overview and per-record delete action.
1.2.2
- Добавлен параметр
Available Languagesв Общие настройки (коды языков, разделенные запятыми). - Поля перевода службы и средства выбора языка полей контакта теперь используют только языки, настроенные в общих настройках.
- Улучшена согласованность списка языков между проверкой настроек и формами администрирования.
1.2.1
- Добавлены операции надбавки (
Surcharge %иSurcharge $) в тарифах & Скидки. - Добавлено правило
Single Night Only, позволяющее точно настроить таргетинг на одну ночь. - Расширенная разбивка цен в реальном времени со специальной строкой надбавок.
- Улучшена разбивка цен на услуги в реальном времени: каждая выбранная услуга теперь отображается в отдельной строке с указанием количества, цены за единицу и общей суммы по строке.
- Added support for unlimited validity on rates and discounts with a new No end date option.
1.2.0
- Добавлены уровни скидок при минимальном пребывании (например, еженедельные скидки), при этом более длительное пребывание имеет приоритет.
- В форму бронирования добавлена разбивка цен в режиме реального времени, чтобы гости могли видеть окончательную сумму перед отправкой заявки.
1.1.1
- Исправлена обработка даты iCal за счет правильного применения часовых поясов для DTSTART/DTEND и обеспечения существующего импорта, соответствующего UID, обновляющего как диапазоны резервирования, так и блокировки занятых дней, чтобы предотвратить однодневные расхождения в календаре.
- Улучшена очистка синхронизации iCal: теперь удаляются только устаревшие будущие импортированные заблокированные бронирования (включая отмены из исходных каналов), сохраняя при этом исторические бронирования.
- Исправлен дизайн оформления заказа/регистрации
- Обновите обработку nonce в формах администратора для повышения безопасности.
- Установите для внутреннего списка резервирований значение по умолчанию «Дата с по сегодняшний день», включите текущие и будущие резервирования (date_to >= сегодня) и отсортируйте по дате начала по возрастанию по умолчанию.
- Исправлена нормализация поставщика iCal, поэтому URL-адреса календаря Airbnb последовательно обнаруживаются и сохраняются как airbnb (а не другие), включая автоматический перенос устаревших версий.
1.1.0
- Первоначальный выпуск на WordPress.org.
