Техническое задание: Расширение функционала бронирования для WordPress-темы
Цель проекта
Разработать решение для WordPress, которое расширит возможности бронирования услуг в рамках заданной темы оформления. Основная задача - внедрить систему учёта длительности дополнительных услуг, чтобы итоговое время бронирования автоматически рассчитывалось как сумма базового слота и времени всех выбранных клиентом опций.
Основные функциональные требования
1. Административная часть (бэкенд)
- Добавить в интерфейс редактирования листинга (в раздел "Прайс-меню" или "Дополнительные услуги") новое поле service_duration для каждой услуги.
- Поле должно принимать целочисленное значение (минуты).
- Данные должны сохраняться в существующую структуру хранения информации об услугах (вместе с названием, ценой, флагом бронирования).
2. Пользовательская часть (фронтенд)
- В процессе оформления бронирования система должна определять, какие дополнительные услуги выбрал пользователь.
- Автоматически вычислять общую длительность брони: базовая длительность слота + сумма длительностей (service_duration) всех выбранных услуг.
- Корректно устанавливать время окончания (end_time) и занимать в календаре необходимое количество временных слотов, предотвращая пересечения бронирований.
3. Технические и архитектурные требования
- Решение должно быть реализовано в виде отдельного плагина или кода для дочерней темы (child theme).
- Запрещается вносить изменения в файлы оригинальной темы или основных плагинов, чтобы обеспечить совместимость с будущими обновлениями.
- Код должен быть хорошо документирован комментариями.
Ожидаемый результат
Владелец сайта получает готовый модуль, который после установки и активации добавляет в админ-панель новое поле для указания длительности услуги. На стороне клиента процесс бронирования автоматически учитывает это время, делая расписание более точным и удобным.
Дополнительные указания для исполнителя
В финальном решении необходимо предоставить:
- Чистый и комментированный код.
- Краткую инструкцию по установке (куда вставлять файлы или как установить плагин).
- Пояснение, как новое поле будет отображаться и использоваться в админ-панели.