Easy restaurant menu manager

Plugin Banner

Easy restaurant menu manager

by Nikel

Download
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

  1. The upload area is completely separate from the other admin settings, staff can be given permission to upload menus without any risk.
  2. SEO and User friendly: Links are stable -> you can change the menu name, but the link to the menu stays the same.
  3. Unlimited menus supported with premium add-on: beautiful-wp.com. The basic version supports lunch menu and a main menu.
  4. Links to menus can be placed everywhere in wordpress: you get shortcodes for the links.
  5. Linktext can easily be changed in the shortcode.
  6. Multilanguage support.
  7. Add a descriptive text for the menu uploader with instructions.
  8. 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.

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 as lunch or general.
  • 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.

  1. Menu upload for admins

    Menu upload for admins

  2. Settings for admins

    Settings for admins

  3. Menu upload for role "Restaurant Menu Uploader"

    Menu upload for role "Restaurant Menu Uploader"

What is the maximum menu file size?

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.

What happens if a menu is replaced during a download?

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.

How are menu downloads cached?

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.

How do I replace an existing menu block?

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.

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

Works perfect such a good plugin, this is something that all restaurant needs that has a lunch menu that changes every week Can recommend and also an excellent support, THANKS!

This is Fantastic!!!

By Eva Garbo on May 6, 2020

This is exactly what I was looking for, I wish I could upload more menus. I need to be able to upload: Luncheon Menu Dinner Menu Gelato Menu Dessert Menu Wine List Is there some way you can expand this menu pdf uploader???

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
Back to top