Jesse Cortez

Simple Retail Menus

A WordPress Plugin that allows you to easily create and manage salon, restaurant, or retail store menu lists of services, food items, retail items, or other data.

Perfect for salon, restaurant, and retail store websites, as well as many other applications. Simple Retail Menus lets you create and manage menu-type lists for display in a post or page. This is a free, full-featured plugin. Create as many menus as you want, add as many items as you want to any menu, add menus to any post or page on your WordPress site.It’s simple and easy to use! Just build your menus, then copy/paste the resulting ‘shortcode’ into you post or page.

Example of a shortcode:


  1. Upload the entire ‘simple-retail-menus’ folder to the ‘/wp-content/plugins/’ directory.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.

Basic Use

  1. Click ‘Add new Menu’ link on the main Retail Menu plugin page. Give your menu a name (required) and a description (optional). Click ‘Add Menu’.
  2. Add as many items as you want to your menu. Item Names are required. Image thumbnail, description and value fields are optional.
  3. Menu information and menu item information can be updated or deleted at any time. As of version 1.1, basic html can be included in all menu fields.
  4. Change the order of menu items by dragging the rows of menu items into the desired order, then clicking ‘Update Items’.
  5. Get the menu Shortcode. Choose your display options, then copy the resulting ‘shortcode’ into the content of any page, post, or the Sidebar Text Widget.

You can include HTML tags in all menu fields, so hyperlinks, image links, in-line styles and formatting tags are supported.


Define styles in your WP template stylesheet to change the menu styles. See Custom Class Example for reference CSS.

Display Options

Note: Default options do not need to be included in the shortcode. The only required attribute in the shortcode for a menu to display is ‘name’.


Refers to the containing DIV that is generated for every menu.

Options for ‘class’

  • Three class styles are built into Simple Retail Menus: ‘default’, ‘light’, and ‘dark’.
  • If you create your own custom class for your menus you can enter it under the ‘custom’ option.
    Note that the custom class text field will only allow you to enter valid CSS class names. See ‘display.css’ for css style structure.


Refers to the name of your menu. It can be displayed in any html containing element.

Options for ‘header’

  • Any html container: div, span, p, h1-h6, section, article, etc.
  • ‘none’ will cause the menu title to not display.
  • Default: ‘h2’.


Refers to the description of your menu. It can be displayed in any html containing element.

Options for ‘desc’:

  • Any html container: div, span, p, h2-h6, section, article, etc.
  • ‘none’ will cause the menu description to not display.
  • Default: ‘p’


Refers to the html structure the menu data is displayed in. YOu can choose to display any menu as rows in a table, Ordered list, unordered list, definition list or as a series of nested divs.

Options for ‘display’:

  • ‘table’
  • ‘ul’
  • ‘ol’


Version 4.2
* Added a loop to include placeholder values for multiple value column data

Version 4.1
* Improved security against sql injection

Version 4.0

* Image Thumnails use WP sized images
* Image thumbnails can have links
* Updated Admin UI
* Added Rollover zoom for image thumbnails in admin view
* Improved page display code
* Added Admin Bar node for plugin
* Added option for legacy page desiplay for v3 and below.
* Added Variable number of value columns
* Added Ability to hide items from display

Version 3.0
* Multisite Capable
* Menus gain a ‘label field’, a display name in the admin area. Does not display in page/post html.
* Definable menu column headers
* Image uploading for menu items
* Optional second ‘value’ field
* Output HTML and CSS updates

Version 2.0
* Added the capability to add a menu to the Sidebar by including the shortcode in the Text Widget.
* Changed the shortcode to use the ID, rather than the NAME of a menu. NOTE: Name can still be used, but ID is preferred.

Version 1.1.1
* Fixed a bug in the Javascript that caused menu list in Admin display to be disabled.

Version 1.1
* Added the ability to include basic html in all menu fields. You can now have hyperlinks, image links, and inline styles in your menus.

Version 1.0.1
* Fixed Form Action for Add New Menu



  1. Doreen says:

    HI – I am trying to use your plugin. I placed the shortcode on the page and nothing happened after I updated. Am I missing something? Thanks!

    • Jesse says:

      The plugin works pretty simply. If you have a menu created and paste in the resulting shortcode into a page or post then it ought to display the menu after updating the page. The shortcode should be in the form of the following example: [simple-retail-menu id="1"]

      Are you using WordPress version 3.0 or higher? It’s possible that another plugin or some unique configuration of your WordPress installation may be interfering with the Menu plugin.

  2. Steven Brady says:

    I hate asking for ETAs, but do you have any idea when the option for multiple price columns will be available? For some of the finer restaurants it works well, but for a basic sub or pizza place, with half and whole options, or pizza sizes, I’m just not able to use it.

    • Jesse says:

      Unfortunately not as soon as you would probably like. I just don’t have the free time to work on the plugin right now. A workaround is to enter the value as something like “Half $6 / Whole $12”.

  3. Chad says:

    Nice plugin! Fills the need i have for a custom post type without the messing about with adding one manually – really like the simple shortcode generator, clients love that as it makes their lives a little easier.
    Was wondering, any chance of having an image and/or thumbnail field for the products? I want to show images of the items and figured that before i go an code it in myself i should ask.

    Cheers, thanks agian for a great little plugin!

    • Jesse says:

      Thanks Chad, glad it’s working well for you! It probably won’t be until the new year when I will have a new version with an image thumbnail uploader built in.

  4. Jakob says:

    i changed the user roles, so that every subscriber can create his a food menu. One thing I want to change is, that the logged-in subscriber, could only see food menus, which was created by himself.
    until now the subscriber can see and alter all food menus that was ever made.
    What can I do, or where do I have to change the code, to display only the food menus in the backend that where created by the user which is logged in at the moment? is this possible or do I have to write a complete new plugin for that?

    • Jesse says:

      Sorry, it’s an all or nothing deal with user capability access. Developing a unique user/capability access scheme on each individual menu would be a big effort that I don’t see on the horizon. I suppose it could be done, but it’s beyond the concept of what I had for this plugin, which is a simple menu creating plugin.

      • Mauro says:

        About Jakob request and Jesse answer: I’ve give a fast look at the tables created, the code and the feature. Should’t be so hard to implement. You have choosen to have a table without a column for the Author of the menu’ (the user who wrote the menu’). Adding this filed and making a checking if (author == current user) dislplay else skip should be easy. We have the same need of Jackob, a site, many cookers , every one with his own menu’…and don’t want each cooker can see or edit others ones.

        • Jesse says:

          I’ve added this idea to the list of improvements for the next version of the plugin. Hopefully I’ll get some time soon to develop and release it.

  5. Alejandro says:

    Hi Jesse, this is a terrific plugin and very usefull. Buddy, is there a way to embed one menu into the side bars? I am developing a site and I need to display the menu of the week in a side bar. Thanks for your help.

  6. Gabriele says:

    Is it possibile to add a field to upload a thumbnail of each item?

    • Jesse says:

      I hope to have an updated version in the near future that will include that capability. In the meantime, you could add html code in one of the current fields to a hosted thumbnail image. I can also do custom one-off version of the plugin if you need something specific. Email me if you are interested in discussing custom work.

  7. Chazzer says:

    This looks like it could be very useful. Love the ajax re-order for menu items.
    Any chance this feature [or some other re-order feature] could be extended to the list of menus? So that menus could be displayed in a preferred order and not just the order they were added?

  8. Cory says:

    Love it! Just wish we could add other options under a menu item. (i.e. small, large, with… ect. ) with appropriate pricing.

    What do you think Jesse?

    Thanks for sharing!

  9. Maximilian says:

    Hi Jesse, the Plugin works really nice – but i want the value / price to align right. Where cpould i fix this in the display.css. also it would be useful to change the with of the cell where the value is to about 40px.

    • Jesse says:

      Hi Maximillian,

      Thanks! You either use your own style for the menu that you declare in your WP template style sheet, or you can just add some styles to the default style classes that the SRM plugin uses. If your Shortcode doesn’t include a style definition (light, dark, or custom) then the CSS style the menu will use is jsrm-menu. You can define styles for this class in your template sytle sheet. In this case, add:

      .jsrm-menu .value{
      	width: 40px;
      	text-align: right;

      Notice that this style target the value class nested in the jsrm-menu class. This value class is applied to the table cell that holds the value data.

      See Custom Class Example for reference CSS.

  10. Mindy says:

    I run a website that lists 280 restaurants. We will have a select number of restaurants that have their own page on our website, along with their full menu. I was just wondering how the table behaves once it gets past a certain number of rows. These menus can get pretty long! I just think it could get a little unruly to have the ENTIRE menu just keep going and going down on the page. (Maybe have it limit how many rows and then go to a “next page” ?). Also, I would like to separate it into Appetizers, Entrees, Desserts, etc. Is this possible?

    • Jesse says:

      Hi Mindy,
      There isn’t any functionality in the plugin that will allow for page breaks or sub-sections of a menu. You can create separate menus for each section (appetizers, entrees, etc.) and include as many menus as you want on one page or post. Likewise, you could create multiple menus as parts of a larger menu and include each part on separate page or post and use the WordPress navigation to advance through pages of the menu.

      As far as how many rows the menus can handle… well, it should be a lot. The MySQL database that WP runs on is pretty sturdy and scalable. The plugin takes then menu data and spits out HTML accordingly, and HTML tables and lists don’t have a maximum count that I know of… Anybody?

  11. Tia says:

    FINALLY! A simple menu plugin that does a simple job. Thank you Jesse for this great plugin! Very easy to customize as well.

    • Jesse says:

      Hey, Thanks! I’m glad it’s working for you! I created the plugin because I couldn’t find anything that did what I needed.

  12. rowlandville says:

    I installed the plugin. It lets me create a menu and add a description. But I see no other fields, so I can’t add items.

    I need help ASAP.


  13. caitlin says:

    This plugin looks like what we’ve been searching for to make updating menus easy for our clients, but I was wondering if there is a way to give a user with the editor role access to edit the menus?

    • Jesse says:

      Yes, you can change the user level that has access to the menus by performing a pretty simple modification to the file simple-retail-menus.php. The ability to view/create/edit menus is based on the “user capability” that is assigned in two places in this file. By default, this is set to “manage_options”, which is an admin-only capability. There is a list of all WordPress user capabilities according to user role.

      Choose a capability that is specific to the user role you want to have access to the Menu plugin page. I think “edit_pages” would work well since it is only available to Editors and Admins.

      Now you need to edit the simple-retail-menus.php file in two places. First on Line #98 you will see:

      $jsrmpluginpage = add_menu_page( 'Retail Menus', 'Retail Menus', 'manage_options', 'jsrm-retail-menus', 'display_page');

      Change 'manage_options' to 'edit_pages'.

      Next, on Line 297, you will see:

      if (!current_user_can('manage_options'))

      Change 'manage_options' to 'edit_pages' here as well.

      Save your changes and now users with an Editor role can use the Menu plugin.

  14. Jerry says:

    My website body is black and your headers seem to be defaulted to black color…do you know how we can change this? Please let me know. so far it the plugin looks good but I need these colors to be changed. Please advise and thanks for the great work.

    • Jesse says:

      Font colors are only declared for the built-in “dark” and “light” styles. The ‘basic’ style doesn’t declare font colors at all. If this isn’t working for you, you can edit the ‘display.css’ file in the plugin folder. Be aware that if you do this, your modifications can be overwritten by future updates or re-installing the plugin.

      The better way to control the styling of the menus is to use your own custom style, defined in your theme style sheet. You can look at the ‘display.css’ for reference on how the menus are styled, then create your own style. Choose ‘custom’ in the ‘Menu container style’ dropdown menu under ‘Get Menu Shortcode’. enter your custom style name and use the resulting shortcode.

  15. danielle says:

    This is just what I’m looking for except is there any way to have sub-categories? Like “Lunch Menu” and items are split in to “Appetizers” and “Entrees” ??


    • Jesse says:

      There isn’t a subcategory function. But you can have multiple menus on one page, so you could make an Appetizers menu, an Entrees menu, etc. all under a Lunch Menu heading, right?

      • sam says:

        I just used your recommendation by creating separate menus for each section (dine-in, to go,Catering, etc..) and then included the menus in one page. however, the price of each menu is aligned properly within the menu (using table) but the price alignment of one menu is not the same as another, making the display looks sloppy. All default settings were used and no customization. Any help is appreciated.
        [simple-retail-menu id="2"]
        [simple-retail-menu id="3"]
        [simple-retail-menu id="4"]

        • Jesse says:

          You will probably have to set a specific width for the menu tables since each table’s width is based on it’s content. Add a width style tot he tables as shown below in your template css.

          jsrm-menu table, .jsrm-menu ol, .jsrm-menu ul, .jsrm-menu dl, .jsrm-menu>div{
          border: 1px solid #ccc;
          border-radius: 4px 4px 4px 4px;
          border-spacing: 0;
          // Make the following width anything you want: 100%, 600px, etc...


  16. Dan says:

    Nice plugin! Possible to set some img includes? I need more than just title and description…I need between 4 and 6 fields more… Possible with adding some things to display.php?

    • Jesse says:

      You can easily include an image in the menus by linking to an existing image file ( image ) in any of the menu fields.

      Adding extra fields is not difficult but it requires modifying display.php as well as several functions in simple-retail-menus.php. Keep in mind that all menus created have would have the same number of columns.

      I can write up some documentation on how to hack the existing plugin. If you want me to create a custom version for you we can discuss that through email.

      • Bryka says:

        I would love to know the instructions on how to add more fields to the row. Can you please either email me or post a new topic and teach us :) I looked at the files and they are way to complex for a little old html coder.

        • Jesse says:

          It’s a fairly involved process to add more fields to a row. You have to modify the database queries for inserting and retrieving data, you have to modify the output display html and you have to modify the admin area display to include the input/edit fields for the extra data. Someday I might get around to documenting the whole process, but I just don’t have the time so spare for it these days. However, I have created custom versions of the plugin with up to 4 more entry fields (extra price fileds, description fields, thumbnail image upload fields, backend label fileds, etc.). I can create a custom versions in exchange for donation. Let me know if you are interested in something like that.

  17. Jennie says:

    Love your plugin! It has made creating my website much faster. Is there any way to include hyperlinks in the text?

    • Jesse says:

      Hi Jennie, Thanks, glad it’s working well for you!

      I just updated Simple Retail Menus to version 1.1 today. This update allows you to include HTML entities in all menu fields. You can include hyperlinks, image links, html tags and inline styles in your menus.

  18. Phyllis Erck says:

    Nice plugin. Would like to use it on a subsite of a multisite WP installation.

    Right now it doesn’t work. When click to add a new menu, it takes me to the root site.

    • Jesse says:

      Unfortunately I didn’t write this plugin necessarily to work with multisite installations. Perhaps in a future update I can do that, but I’ll need to get more acquainted with multisite installs first. So, to be clear, when you click “Add New Menu” it takes you out of the admin area altogether?

    • Jesse says:

      While looking into this problem I found that the form action I was using in the Add New Menu form was slightly incorrect. I updated it and just submitted version 1.0.1 to the WordPress repository. I can’t say for sure if this will fix the problem you are having in the multisite installation, but I think it might, Please let me know if you try it and it works (or doesn’t work).

      Thanks for the feedback! And I’m glad people are finding a use for this!

  19. Garry says:

    Wow – first day! Looking for something to code a school lunch program…

  20. Jesse says:

    I just uploaded version 1.0 of this plugin to the WordPress Repository.

Leave a Comment