Simple Retail Menus

Simple Retail Menus is 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.

Download Simple Retail Menus 2.0

Requires at least: WordPress 3.0
Tested up to: 3.2.1

Description

This WordPress plugin is specifically designed for salon, restaurant, and retail store websites, but useful for many other applications, Simple Retail Menus lets create and manage menu-type lists for display in a post or page. Create an many menus as you want. Add as many items as you want to any menu. Each row of data can include Item Name, Item Description, and Item Value.

Simple Retail Menus creates two additional tables of data in your WordPress database to store menu data and menu item data.

The resulting menu data is displayed by including a ‘shortcode’ in the content in a page or a post.
Example of a shortcode: [simple-retail-menu name="My Menu"]

Installation

  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.
  3. Menu information and menu item information can be updated or deleted at any time.
  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 or post.

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

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’.

‘class’

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.

‘header’

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′.

‘desc’

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’

‘display’

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’
  • ‘dl’
  • ‘div’

Advanced/Hacks

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

 

Changelog

1.1.1: (7/5/2011) Updated the javascript handling of disabled form fields. Since WordPress version 3.2, the old JS caused form fields to be disabled, and therefore would not update the menu data in the database on update command.

1.1: (6/28/2011) Updated the display php functions to allow pass-through of HTML tags and entities. Images, hyperlinks, inline styles and formatting tags are now available in all menu fields.

1.0.1: (6/23/2011) Fixed the form action for ‘Add New Menu’ form. Should work better in WP multisite installations.

64 Comments

  1. Jesse says:

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

  2. Garry says:

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

  3. 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!

  4. 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.

  5. 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.

  6. 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” ??

    thanks!

    • 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?

  7. 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.
    Jerry

    • 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.

  8. 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.

  9. 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.

    Thanks.

  10. 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.

  11. 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?

  12. 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.

  13. 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!

  14. 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?

  15. 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.

  16. 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.

  17. 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.

  18. 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.

  19. 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″.

  20. 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.

  21. Marcos says:

    Thank you very much for this plugin. I’m starting to use and learn about WordPress. I have a question: how to add a dotted line between an item and the value (such as a restaurant menu) using only CSS, without having to modify PHP side of the plugin? It is possible? I saw a tutorial that explains how to do it, but I can achieve the effect. http://www.search-this.com/2007/11/26/css-a-recipe-for-success/

  22. Michael says:

    Just tried 2.0 on a WordPress Multi Site (3.2.1). Almost works.

    Everytime you create a menu, save or update, it jumps back to the main home domain. i.e.:

    maindomain.com/wp-admin/admin.php?page=jsrm-retail-menus&mode=editmenu&targetmenu=1

    instead of:

    maindomain.com/wp-admin/multidomain/admin.php?page=jsrm-retail-menus&mode=editmenu&targetmenu=1

    (It might be why Doreen above is seeing nothing – it goes back to the main domain which is probably empty)

  23. Pat says:

    Hey, great plugin! Really easy to use. I was just wondering if there is a way to list items without a numbered list? I’m going to try and line up two menus side by side using columns, but I really prefer no number prefixes. Do you know if there is a way to do that?

    • Jesse says:

      Certainly. By default the menu data is displayed in a table, which has no numbering. Simply set the “Display menu as” option to “table”, and use the resulting shortcode in your post.

  24. field says:

    Hi! Nice plugin! Very useful! Is it possible to backup the entire menus created with the plugin and restore them to another (fresh) installation of wordpress?
    tnx!

    • Jesse says:

      At this time there is not a built-in backup function. There are several WP backup plugins available that will help you with this.

  25. Don says:

    Hi Jesse-
    Your plugin wins easily over anything I have yet to see. Love it. I as well would like to chime in about the thumbnails in the menus-even if it is associated with only the individual menus. I do not mind adding the images myself and working a little css magic, if necessary. There are many themes out there that are really good from the layout, but drilling down to the functions-they try to accomplish too much. So i end up picking the best of everything and combining them into a WP configuration – restaurant menus, events, coupons-what I like about this approach is that I can use the same plugins for the main site and the mobile site. Then the client only needs to update one source–much easier!
    I also did a jquery slider and put in individual menus under each header-renders very nicely and makes a very slick interface. Great job!

    • Jesse says:

      Thanks Don! I’d love to see the instances of the plugin in action. Send me your links if you don’t mind, I can either post them as examples or keep them private, depending on your wish. Thanks!

      ~Jesse

    • Jakob says:

      Don, could you share a link to see your work in action, if you don’t mind?
      or even share it with us as examples?

      did anyone else customized retail user menus for his/her own needs, and could give me some litte example or help? I have more free time at the moment and want to program some features for this amazing plugin!

  26. Rory says:

    Hi, love this plugin think I found a wee bug in the CSS line 22 whereby your code affects all not just the ones created by the plugin. Fixed it by adding .jsrm-menu in front.

    • Jesse says:

      Oops, you are correct. Line 22 of display.css should be changed to:

      .jsrm-menu ol, .jsrm-menu ul{padding: 0;}

      Thanks for the eagle eye!

  27. Elizabeth says:

    Hi There,
    Thanks for creating such a great, simple plugin! I hope my question has a relatively simple answer. My client wants the background of the menu to just be white (not shaded like it currently is displayed). I’m sure I can edit this in the CSS, but the link you referred to above on how to do this doesn’t work (the Custom Class Example).
    Thanks so much for your help.

  28. Andy says:

    Hi Jesse,

    Great plugin !!! Thanks !!!!

    I’m testing the plugin today and found it is easy to use and fully functioning except one ting – Asian language (characters) seems not currently supported. Is there a way to sort this out?

    Thanks again for creating this nice plugin!

    Cheers,
    Andy

    • Jesse says:

      I have added that to my list of improvements to consider in an upcoming release. Sorry that the plugin doesn’t support all languages as of now.

  29. Andy says:

    Hi?

    Just write again to make things clear
    1. Database set to UTF8 unicode
    2. Reading setting set to UTF8
    3. Tried Chinese and Japanese, all good on other post and pages, but not Retail Menu
    4. All double-bytes “transformed” into “???” (questions marks)

    • Jesse says:

      I’ll research this. If nothing else, creating this plugin has made me learn alot of stuff I wouldn’t have otherwise!

      ~j

  30. jim says:

    Could I see some links to websites using this plugin? Thanks!

    • Jesse says:

      I would like to see some also. Does anybody want to share their work using this plugin? Send me your url and I’ll create a list or gallery of sites using the SRM plugin. Thanks!

      ~Jesse

  31. Brian Collins says:

    Will you be making this multi site compatible? I love this plugin and would love to use it on my mobile site platform – I have experimented on single sites and it works great. Would love to use on multi sites. NIce Job! Awesome Plugin!

  32. Franklin says:

    Hi I like your plugin. Thanks!
    Is there any way I can add new column? for example there is Small Medium Large and each has different prices. How can I add columns for that?

    • Jesse says:

      Although I have plans for a flexible version of the plugin for release in the future… for now I can craete custom versions of the plugin with minor modifications in exchange for donations. Email me about what you need exactly and we can discuss it.

Leave a Comment