WP Manifestindependent plugin directory
manifest / content / meal-menu

Календарь питания

Управление школьным меню: шаблоны циклов, календарь питания, генерация Excel для ФЦМПО, общественный контроль питания.

★ 0stars

Install

Download source zip No release zip yet

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.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

WordPress-плагин для управления школьным меню: шаблоны циклов, календарь питания, генерация Excel для ФЦМПО, общественный контроль питания, детский сад.

Работает как со школами, так и с детскими садами.

Возможности

  • Шаблоны циклов — создавайте наборы блюд по дням, импортируйте из XLSX или TM-файлов
  • Календарь питания — назначайте дни цикла на даты, отмечайте выходные/рабочие дни, копируйте данные между отделениями
  • Excel для ФЦМПО — генерация ежедневного меню (daily), типового примерного меню (TM), годового план-графика (KP), общественного контроля (OC)
  • Общественный контроль питания — разделы ФИС ФРДО: положение, горячая линия, диетические меню, анкетирование, отчёты
  • Летний лагерь — отдельные шаблоны и календарь для пришкольного лагеря
  • Gutenberg-блок — вставьте календарь на любую страницу, настройте палитру и макет
  • AI-распознавание фото меню — сфотографируйте меню, перетащите в дропзону — AI заполнит шаблон
  • Публикация файлов — скопируйте XLSX в публичную папку /food/ для внешних систем
  • Email-уведомления — напоминания о незаполненном меню, SMTP-поддержка

Установка

  1. Скачайте последний релиз со страницы релизов
  2. В WordPress: Плагины → Добавить новый → Загрузить плагин
  3. Выберите скачанный ZIP и нажмите «Установить»
  4. Активируйте плагин

Либо скопируйте папку meal-menu в /wp-content/plugins/.

Быстрый старт

1. Настройки пищеблока

Питание → Настройки пищеблока

  • Выберите тип учреждения: Школа или Детский сад
  • Типовые отделения создадутся автоматически
  • Отметьте нужные отделения, настройте рабочие дни
  • Если у отделений одинаковое расписание и нумерация цикла — используйте «Объединить календарь с», чтобы вести общий календарь. Блюда, порции, цены и КБЖУ остаются в шаблонах каждого отделения
  • Добавьте праздники — задаются без года, применяются ежегодно. Если дата выпадает на выходной — переносится на понедельник
  • Для школы: настройте учебный год, каникулы, утверждающее лицо для TM-файлов

2. Шаблоны циклов

Питание → Шаблоны

Создайте наборы блюд по дням цикличного меню:

  • Добавить день — новый пустой шаблон
  • Импорт XLSX — перетащите файл ежедневного меню в дропзону
  • Импорт TM-файла — загрузите типовое примерное меню (заменит весь цикл)
  • AI-распознавание — перетащите фото меню (JPEG/PNG/WebP) — AI заполнит шаблон (требуется настроенный AI-коннектор)

Для каждого дня заполните приёмы пищи: завтрак, обед, полдник, ужин и т.д. Колонки появляются автоматически при добавлении блюд.

При объединённом календаре заполните шаблоны в каждом отделении с одинаковыми номерами дней. Например, при sm → main общий календарь назначает на дату день № 3 из цикла main, а меню начальной школы берёт блюда из дня № 3 отделения sm. ID шаблонов могут отличаться. Если собственного шаблона с нужным номером нет, меню этого отделения не публикуется; блюда другого отделения не подставляются.

3. Календарь

Питание → Календарь

Ежемесячно назначайте дни цикла на конкретные даты:

  1. Выберите вкладку отделения
  2. Перейдите на нужный месяц
  3. Кликните на первый рабочий день, укажите номер дня меню
  4. Нажмите «Заполнить до конца месяца» или «Применить»
  5. После заполнения всех дней — «Создать файлы»

Для объединённых отделений расписание редактируется на общей вкладке и хранится у отделения, указанного в «Объединить календарь с». Даты, номера дней цикла и отметки выходных общие; шаблоны меню редактируются на отдельных вкладках «Шаблоны». Кнопка «Создать файлы» создаёт ежедневные 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 или позднее