MenuMaker WordPress Plugin
Легковесный плагин для управления меню и изображениями для служб доставки
MenuMaker — это простой и эффективный плагин WordPress, предназначенный для управления меню ресторанов/кафе и связанными с ними изображениями. Идеально подходит для интеграции со службами доставки (Glovo, Bolt, Wolt и т.д.), предоставляя централизованное место для управления данными меню и изображениями, которые могут быть затем экспортированы или отображены на вашем сайте.
Ключевые особенности:
- Управление изображениями: Загружайте, переименовывайте и удаляйте изображения в формате JPEG с помощью удобного интерфейса Drag & Drop.
- Галерея изображений: Просмотр изображений в виде миниатюр с эффектом увеличения при наведении и полноэкранным просмотром по клику. Поиск и сортировка изображений.
- Управление меню: Импортируйте и экспортируйте данные меню с помощью CSV-файлов (совместимо с Google Таблицами и Excel). Редактирование и удаление строк меню прямо в админке.
- Гибкий доступ: Настройте, какие роли пользователей WordPress могут получать доступ к функциям MenuMaker.
- Легковесность: Плагин разработан без использования внешних PHP-библиотек (кроме стандартных для WordPress), что обеспечивает высокую производительность и минимизирует зависимости.
- Портативность: Все загружаемые изображения хранятся в отдельной, безопасной папке вне директории
wp-content/uploads
, что облегчает перенос данных и сохраняет их при переустановке WordPress. - Публикация меню на сайте: Легко отображайте ваше меню на любой странице или посте WordPress с помощью шорткода.
Структура проекта
menumaker/
├── menumaker.php <-- Основной файл плагина, отвечает за инициализацию и подключение модулей.
├── assets/
│ ├── css/
│ │ └── menumaker-admin.css <-- Стили для административного интерфейса плагина.
│ └── js/
│ └── menumaker-admin.js <-- JavaScript для интерактивных элементов админки (D&D, поиск, модальное окно и т.д.).
└── includes/ <-- Папка для логического разделения функциональности на модули.
├── admin-access.php <-- Управление ролями доступа к плагину.
├── admin-pages.php <-- Регистрация страниц админки и рендеринг табов.
├── image-manager.php <-- Логика для вкладки "Images" (отображение, формы).
├── menu-data.php <-- Логика для вкладки "Menu" (отображение, формы).
├── ajax-handlers.php <-- Все AJAX-обработчики (загрузка/удаление/переименование изображений, экспорт CSV).
└── shortcode-display.php <-- Логика для отображения меню на фронтенде с помощью шорткода.
Установка
- Скачайте последнюю версию плагина.
- Распакуйте архив.
- Загрузите распакованную папку
menumaker
в директориюwp-content/plugins/
вашего сайта WordPress. - Активируйте плагин «MenuMaker» через панель управления WordPress (раздел «Плагины»).
- После активации плагин автоматически создаст папку
menumaker_uploads/
в корне вашей установки WordPress для хранения изображений и добавит в нее файл.htaccess
для безопасности.
Использование
1. Доступ к плагину
После активации, в левом меню админки WordPress появится новый пункт «MenuMaker». По умолчанию доступ к плагину имеют только Администраторы. Вы можете настроить это:
- Перейдите в MenuMaker > Access.
- Выберите роли, которым разрешен доступ к функционалу плагина.
2. Управление изображениями (Вкладка «Images»)
- Перейдите в MenuMaker > Images.
- Загрузка: Перетащите JPEG-файлы в область «Drag & Drop your JPEG images here» или кликните по ней, чтобы выбрать файлы.
- Просмотр: Загруженные изображения появятся в таблице ниже. Наведите курсор на миниатюру, чтобы увеличить ее. Кликните, чтобы открыть полноэкранный просмотр.
- Поиск: Используйте поле «Search images…» для быстрого поиска изображений по имени.
- Сортировка: Выберите опцию в выпадающем списке «Sort by» для сортировки изображений по имени или дате.
- Переименование: Введите новое имя (без расширения) в текстовое поле рядом с изображением и нажмите «Rename». Плагин автоматически добавит
.jpg
. - Удаление: Нажмите кнопку «Delete» рядом с изображением.
- Экспорт списка изображений: Нажмите «Export Images List to CSV», чтобы скачать CSV-файл со списком всех загруженных изображений, их URL и метаданными.
3. Управление меню (Вкладка «Menu»)
- Перейдите в MenuMaker > Menu.
- Импорт меню:
- Подготовьте ваш CSV-файл с данными меню.
- Ваш CSV должен быть в кодировке UTF-8 с BOM (Byte Order Mark) для лучшей совместимости с Excel.
- Плагин постарается автоматически определить разделитель (запятая или точка с запятой).
- Нажмите «Import Menu from CSV» и выберите ваш файл.
- Важно: Первая строка вашего CSV-файла должна содержать заголовки колонок, которые будут использоваться как заголовки таблицы в админке.
- Редактирование меню: После импорта данные меню отобразятся в таблице. Вы можете редактировать текст непосредственно в полях.
- Удаление строки: Нажмите «Delete» рядом с нужной строкой, чтобы удалить ее из меню. (Первая строка с заголовками не может быть удалена).
- Сохранение изменений: После внесения изменений нажмите «Save Menu Changes».
- Экспорт меню: Нажмите «Export Menu to CSV», чтобы скачать текущие данные меню в CSV-файл.
4. Настройки и пресеты (Вкладка «Presets»)
- Перейдите в MenuMaker > Presets.
- Эта вкладка зарезервирована для будущих настроек и функций, связанных с пресетами отображения меню или другими глобальными опциями.
5. Публикация меню на сайте (Фронтенд)
- Чтобы отобразить ваше меню на любой странице, записи или в текстовом виджете, используйте шорткод:
[menumaker_menu]
- Вставьте этот шорткод в контент, и плагин автоматически выведет отформатированное меню, используя данные, импортированные через вкладку «Menu».
- (Подробнее об опциях шорткода и стилизации будет добавлено в будущих версиях.)
Разработка
Константы путей
MENUMAKER_PLUGIN_DIR
: Абсолютный путь к директории плагина.MENUMAKER_PLUGIN_URL
: URL к директории плагина.MENUMAKER_UPLOADS_DIR
: Абсолютный путь к директории загрузок изображений (ABSPATH . 'menumaker_uploads/'
).MENUMAKER_UPLOADS_URL
: URL к директории загрузок изображений.
Безопасность
- Все загружаемые файлы JPEG хранятся в отдельной папке
menumaker_uploads/
в корне WordPress, в которой автоматически создается файл.htaccess
, запрещающий выполнение PHP-файлов. - Все данные, полученные от пользователя (включая имена файлов, названия меню и т.д.), проходят санитизацию (
sanitize_text_field
,sanitize_file_name
) перед использованием. - Все формы и AJAX-запросы защищены с помощью nonce для предотвращения CSRF-атак.
Лицензия
Этот плагин распространяется под лицензией GPLv2 или более поздней версии.
Благодарности и поддержка
Если у вас есть вопросы, предложения или вы обнаружили ошибку, пожалуйста, создайте Issue в репозитории проекта.