Easy restaurant menu manager
Easy restaurant menu manager
Description
Restaurant Menu Plugin lets you easily manage your restaurant menus online in just minutes. Designed with employee-friendliness in mind, this plugin includes a user role specifically for uploading restaurant menus as PDFs or other file types. It allows you or authorized staff to upload and manage food and drink menus on your site effortlessly. Menu links can be embedded using a shortcode or the raw link.
Documentation: https://beautiful-wp.com/documentation/
Key Features
- The upload area is completely separate from the other admin settings, staff can be given permission to upload menus without any risk.
- SEO and User friendly: Links are stable -> you can change the menu name, but the link to the menu stays the same.
- Unlimited menus supported with premium add-on: beautiful-wp.com. The basic version supports lunch menu and a main menu.
- Links to menus can be placed everywhere in wordpress: you get shortcodes for the links.
- Linktext can easily be changed in the shortcode.
- Multilanguage support.
- Add a descriptive text for the menu uploader with instructions.
- Optional redirect to Menu Upload Page, after login.
The menus can be uploaded under Media > Easy Menu Upload.
With this plugin you can leave the restaurant menu upload to your employee. The file type is fixed and if the employee does have the user role Restaurant Menu Uploader he can only upload the food menus, nothing else.
Installation
Just install this plugin and go to Media > Easy Menu Upload to upload the menu files.
Shortcodes
You can refer to the menus everywhere in wordpress with the following shortcodes:
To get ready to use html link
For Lunch: [nsc_eprm_menu_link restaurant_menu_type=”lunch” linktext=”Lunch menu”]
For general menu: [nsc_eprm_menu_link restaurant_menu_type=”general” linktext=”General Menu”]
You can change the text of “linktext” as you like.
Both will return a html link ready for usage, with the text of the defined “linktext” value.
to get file url
[nsc_eprm_menu_file_url restaurant_menu_type=”lunch” cachebuster=true]
If you use the premium add-on and have more link types you get the shortcode for the required food menu in the upload section.
REST API
Retrieve all configured menu types, their availability, and their download URLs:
GET https://example.com/wp-json/easy-pdf-restaurant-menu/v1/menu-types
Replace https://example.com with your WordPress installation URL, including its subdirectory if applicable. The Help tab displays the endpoint for your website.
The endpoint is public and read-only. No login, API key, nonce, or query parameters are required. It does not provide upload, update, or delete actions.
Example request:
curl "https://example.com/wp-json/easy-pdf-restaurant-menu/v1/menu-types"
A successful request returns HTTP 200 with a JSON array, for example:
[
{
"menutype": "lunch",
"menutypename": "Lunch",
"available": true,
"downloadurl": "https://example.com/easy-pdf-restaurant-menu/menu-files/menu-lunch.pdf"
},
{
"menutype": "general",
"menutypename": "General",
"available": false,
"downloadurl": ""
}
]
menutype(string): the menu identifier, such aslunchorgeneral.menutypename(string): the menu’s display name.available(boolean): whether an uploaded file exists for this menu.downloadurl(string): the public file URL, or an empty string when the menu is unavailable.
The response includes types added by the premium add-on. Select entries by menutype. A menu without an uploaded file remains in the response with available: false. If no menu types are configured, the response is [].
Display a download link only when available is true and downloadurl is nonempty. Use the returned URL, which reflects the filename setting and file extension.
If /wp-json/ returns 404, save Settings > Permalinks and check the web server’s rewrite rules. The alternative REST URL is:
https://example.com/?rest_route=/easy-pdf-restaurant-menu/v1/menu-types
New user role
This Plugin also adds a new role: Restaurant Menu Uploader. User with this role can only upload the restaurant menu and see the dashboard, so perfect for any employee.
Faq
New uploads are limited to 10 MiB (10,485,760 bytes), or your host’s lower upload limit.
An oversized upload leaves the current menu unchanged. Existing larger menus can
still be downloaded using bounded streaming.
Uploads and downloads run without locking. A download may be interrupted or
corrupted if its file is overwritten. Download it again after the upload finishes.
The plugin streams GET responses in 64 KiB chunks and supports HEAD without a body.
Clients can use the quoted ETag with If-None-Match for a bodyless 304 response.
An upload changes the validator even for same-size replacements within one second.
Last-Modified is provided as metadata; If-Modified-Since alone does not trigger a
304 because filesystem timestamps cannot distinguish all rapid replacements.
Direct static upload URLs remain subject to the web server’s delivery settings.
Custom Gutenberg menu blocks are no longer supported. Replace each existing menu block with a WordPress Shortcode block containing the appropriate shortcode from the Installation section. Existing saved HTML may still display, but it no longer receives menu availability checks.
Reviews
Awesome plugin, with incredible support!
By cope916 on September 8, 2024
The plugin author is more than happy to answer questions and also implement suggestions. Very grateful for the hard work, thank you!
A must for all restuarants
By viralconvert on December 12, 2021
This is Fantastic!!!
By Eva Garbo on May 6, 2020
Changelog
3.0.0
- BREAKING: Removed custom Gutenberg block support. Use shortcodes to embed menu links.
- REFACTOR: Removed legacy logic. If updating from version < 1.9.0 you need to upload your menus again.
- NEW: Redesign of UI in admin
- NEW: Shortcodes are hidden while their menu has no uploaded file.
- NEW: Added the core availability and deletion contract used by the premium add-on.
- NEW: Added menu availability to the menu-types REST response.
- NEW: The text for the uploader was moved directly above the “save menu(s)” button.
- REFACTOR: Replaced native file operations with WordPress upload and filesystem APIs.
- REFACTOR: Added REST API documentation to the Help tab and this readme.
- REFACTOR: Security and Performance Improvements
- FIX: Fixed original-filename handling when uploading a new menu.
- FIX: Sometimes “Use filename as link” did not work for all menus.
2.0.3
- SECURITY FIX: If admin clicks an attackers link, the attacker could have injected files, instead the menu files. (CVE-2025-8491)
2.0.2
- FIX: XSS Vulnerability (CVE-2025-6673)
2.0.1
- Added Plugin URI
2.0.0
- REFACTOR: Improved link logic for greater flexibility. Existing links will continue to function, but we recommend updating to the new link structure for best results.
- FIX: To enhance backward compatibility, menu files are once again available with the site name as a prefix, in addition to the shorter version without the site name.
1.9.1
- FIX: Adding caching headers to new link structure.
1.9.0
- BREAKING CHANGE: Filename is now “menu-.”, before it was “example-page-menu-.”. Files are migrated automatically, but please double check if everything runs smoothly. SEO redirects are NOT created automatically.
- NEW: added option to wrap shortcode link in p-tag.
- NEW: added option to add rel=nofollow
- NEW: added option to prevent files from being indexed
1.8.0
- NEW: added setting for using original filename in download link.
- REFACTOR: minor code clean ups
1.7.1
- Shows now the original file name.
1.7.0
- Improvement: If you provide no link text in the shortcode only the filename will be displayed. Before the whole http link was shown. Which was a bit too much.
1.6.0
- FIX: critical security fix
- Refactor: added capability only for upload
1.5.2
- Improvement: added shortcode nsc_eprm_menu_file_url to get the pure url of the file. To be more flexible.
1.5.1
- Bugfix: error in older php versions
1.5.0
- Improvenment: added support for Gutenberg Blocks
1.4.0
- Improvement: unused files are now deleted
- Improvement: added support for multiple menu types with premium add-on: beautiful-wp.com
- minor fixes and refactorings.
1.3.2
- Improvement: added an id to the shortcode links, for better customizing possibilities.
1.3.1
- fixed a notice message.
1.3
- IMPORTANT After Upgrade to 1.3 you have to assign the User Role “Restaurant Menu Uploader” to all affected users again.
- Moved Admin Page Page for uploading the menus is now under “Media > Easy PDF Menu”
- Renamed User Role “Manage Restaurant Menu” to “Restaurant Menu Uploader”
- Role “Restaurant Menu Uploader” has no access to the Media Library anymore.
- Only Role “Restaurant Menu Uploader” is redirected to upload page after login. Redirect all is optional now.
- Role “Restaurant Menu Uploader” works now, even if woocommerce is installed.
- made uploaded file clickable in admin for instant validation.
- ability to write custom text for the menu uploader.
- Introduced a cache buster for files, to make sure that always the newest version is downloaded.
- a lot under the hood.
1.2
- shows the uploaded filename of the current menu which is live.
- clean up of settings area
- bug fix
1.1.2
- xss fixes
1.1.1
- minor bug fixes
1.1
- made shortcodes more clear in admin.
1.0
- first Version


