Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/igor-blag/meal-menu/archive/refs/heads/main.zipWordPress-плагин для управления школьным меню: шаблоны циклов, календарь питания, генерация Excel для ФЦМПО, общественный контроль питания, детский сад.
Работает как со школами, так и с детскими садами.
Возможности
- Шаблоны циклов — создавайте наборы блюд по дням, импортируйте из XLSX или TM-файлов
- Календарь питания — назначайте дни цикла на даты, отмечайте выходные/рабочие дни, копируйте данные между отделениями
- Excel для ФЦМПО — генерация ежедневного меню (daily), типового примерного меню (TM), годового план-графика (KP), общественного контроля (OC)
- Общественный контроль питания — разделы ФИС ФРДО: положение, горячая линия, диетические меню, анкетирование, отчёты
- Летний лагерь — отдельные шаблоны и календарь для пришкольного лагеря
- Gutenberg-блок — вставьте календарь на любую страницу, настройте палитру и макет
- AI-распознавание фото меню — сфотографируйте меню, перетащите в дропзону — AI заполнит шаблон
- Публикация файлов — скопируйте XLSX в публичную папку
/food/для внешних систем - Email-уведомления — напоминания о незаполненном меню, SMTP-поддержка
Установка
- Скачайте последний релиз со страницы релизов
- В WordPress: Плагины → Добавить новый → Загрузить плагин
- Выберите скачанный ZIP и нажмите «Установить»
- Активируйте плагин
Либо скопируйте папку meal-menu в /wp-content/plugins/.
Быстрый старт
1. Настройки пищеблока
Питание → Настройки пищеблока
- Выберите тип учреждения: Школа или Детский сад
- Типовые отделения создадутся автоматически
- Отметьте нужные отделения, настройте рабочие дни
- Если у отделений одинаковое расписание и нумерация цикла — используйте «Объединить календарь с», чтобы вести общий календарь. Блюда, порции, цены и КБЖУ остаются в шаблонах каждого отделения
- Добавьте праздники — задаются без года, применяются ежегодно. Если дата выпадает на выходной — переносится на понедельник
- Для школы: настройте учебный год, каникулы, утверждающее лицо для TM-файлов
2. Шаблоны циклов
Питание → Шаблоны
Создайте наборы блюд по дням цикличного меню:
- Добавить день — новый пустой шаблон
- Импорт XLSX — перетащите файл ежедневного меню в дропзону
- Импорт TM-файла — загрузите типовое примерное меню (заменит весь цикл)
- AI-распознавание — перетащите фото меню (JPEG/PNG/WebP) — AI заполнит шаблон (требуется настроенный AI-коннектор)
Для каждого дня заполните приёмы пищи: завтрак, обед, полдник, ужин и т.д. Колонки появляются автоматически при добавлении блюд.
При объединённом календаре заполните шаблоны в каждом отделении с одинаковыми номерами дней. Например, при sm → main общий календарь назначает на дату день № 3 из цикла main, а меню начальной школы берёт блюда из дня № 3 отделения sm. ID шаблонов могут отличаться. Если собственного шаблона с нужным номером нет, меню этого отделения не публикуется; блюда другого отделения не подставляются.
3. Календарь
Питание → Календарь
Ежемесячно назначайте дни цикла на конкретные даты:
- Выберите вкладку отделения
- Перейдите на нужный месяц
- Кликните на первый рабочий день, укажите номер дня меню
- Нажмите «Заполнить до конца месяца» или «Применить»
- После заполнения всех дней — «Создать файлы»
Для объединённых отделений расписание редактируется на общей вкладке и хранится у отделения, указанного в «Объединить календарь с». Даты, номера дней цикла и отметки выходных общие; шаблоны меню редактируются на отдельных вкладках «Шаблоны». Кнопка «Создать файлы» создаёт ежедневные XLSX для отделений с включённой публикацией и отдельные типовые меню TM участников группы; план-график KP использует общий календарь.
4. Блок «Календарь питания» (Gutenberg)
В редакторе страницы добавьте блок «Календарь питания»:
- Выберите отделение — его вкладка будет первой на сайте
- Настройте палитру и макет в боковой панели
- Если отделения объединены — выберите основное, зависимые будут недоступны для выбора
- Опубликуйте страницу
Также работает шорткод: [meal_calendar type="sm"]
5. Детский сад
При выборе «Детский сад» в настройках:
- Два типовых отделения: ясли (интернатный режим) и основная группа
- Разделы каникул, утверждающего лица, публикации XLSX и ОК Питания скрыты
- Доступно объединение календарей отделений
- На сайте отображается только календарь с меню
Шорткоды
| Шорткод | Описание |
|---|---|
[meal_calendar] |
Календарь питания. Атрибуты: type (код отделения), palette, layout, show_oc |
[meal_day date="2025-09-01" type="sm"] |
Меню на конкретный день |
Требования
- PHP 8.0+
- WordPress 6.3+
- MySQL 5.7+ или MariaDB 10.3+
- Для генерации Excel: PHP-расширения
ext-zip,ext-gd,ext-fileinfo,ext-xml,ext-dom
Разработка
# Клонировать
git clone https://github.com/igor-blag/meal-menu.git
# Установить PHP-зависимости
composer install
# Установить JS-зависимости и собрать блок
npm install
npm run build
# Проверить изменённые PHP-файлы и регрессию объединённых календарей
php -l includes/class-db.php
php tests/run.php
# Собрать ZIP-архив для установки в WP
./build.sh
Обновления
Плагин автоматически проверяет новые версии на GitHub. Обновление отображается на странице Dashboard → Updates.
В версии 2.0.10 каникулы больше не получают меню и номер дня. Кнопка «Заполнить до конца месяца» пропускает каникулы, а ежедневные XLSX и план-график KP на дни каникул не создаются даже при ошибочных данных в календаре. Ранее созданные XLSX на такие дни сами не удаляются — удалите их через раздел «Файлы» и повторно нажмите «Создать файлы» за затронутые месяцы.
В версии 2.0.9 исправлена подмена меню объединённых отделений. После обновления проверьте собственные шаблоны каждого отделения, затем повторно нажмите «Создать файлы» для затронутых месяцев. Старые XLSX в загрузках и публичной папке /food/ сами от обновления кода не исправляются и автоматически не удаляются. Если нужных шаблонов пока нет и пересоздать файл нельзя, удалите ошибочный XLSX через раздел «Файлы». Если на сайте включён кеш страниц или CDN, очистите его после обновления и повторной генерации.
Порядок работы с общим календарём и проверка результата описаны в docs/workflow-logic.md.
Лицензия
GPL v2 или позднее