Creating a Restaurant Menu

I’m not sure if suggesting plugins here is still taboo, but I’m going to go that route for you, because it’s going to be the most effective and simple method for you to achieve this.

Install two plugins: Custom Post Type UI, and Advanced Custom Fields

Alternatively, forego CPTUI (it’s just nice to have a visual) and create a new custom post type via your theme’s functions.php file. (instructions for this should be easy to find on the wordpress codex.)

Make sure your new post type is set as “has archive”.

Once you have done that, go to “custom fields” and “add new”

Now add all the fields that will be on the menu. For ease of client use, you can also hide fields that are unnecessary. Where it says “location” make sure it’s set to “Show if post type is equal to “

For your image bit, you can have those be the post’s “featured image” or you can add an image field through custom fields.

Then onto your theme. Create a new file: archive-menu.php, where “menu” is whatever name you gave your post type.

Then run a normal loop, and now all of those fields that you created, that your client can easily edit, are now variables that you can use inside your loop by calling those custom fields (which are essentially just fancy meta boxes) like so:

<?php the_field( "subtitle" ); ?>

Where ‘subtitle’ is the name/slug of your field.

Make sure pretty permalinks are enabled, and then going to www.sitename.com/menu (custom post type name/slug) should pull your archive.

So every item is going to be its own “post” inside the “menu” custom post type, and you use an archive template to display those posts, with the ACF plugin to help format and separate info.

I used this approach when building a menu for this restaurant, and it worked nicely.

Hope this helps. Let me know if anything is unclear.