Installation & Activation

Flavor – Restaurant Menu is a WordPress plugin. Install it like any other plugin — no build tools or FTP required.

Install from WordPress.org

1

Go to Plugins → Add New

In your WordPress admin dashboard, navigate to Plugins → Add New Plugin.

2

Search for "Flavor Menu"

Type Flavor Menu in the search field and press Enter.

3

Install & Activate

Click Install Now, then Activate. The plugin menu appears under Menü in your admin sidebar.

📷
Screenshot: WordPress plugin search — "Flavor Menu" result with Install button

Install via ZIP (Pro)

After purchasing Pro, download the .zip file from your Freemius account. Then:

  1. Go to Plugins → Add New → Upload Plugin
  2. Choose the downloaded flavor-restaurant-menu-premium.zip
  3. Click Install Now → Activate
💡
Pro upgrade If you already have the Free version installed, simply install the Pro ZIP on top — your data and settings are preserved.

Quick Start Guide

Create your first restaurant menu in under 5 minutes.

1

Create a category

Go to Menü → Categories and add your first category (e.g. "Starters", "Main Courses").

2

Add your first dish

Go to Menü → Add New. Enter the dish name, description, price and assign it to a category.

3

Add the shortcode to a page

Create or edit a WordPress page and add [flavor_menu]. The menu appears automatically.

4

Preview & customize

Visit the page on the frontend. Adjust layout, theme and columns via shortcode parameters.

📷
Screenshot: Add New Dish screen — title, description, price, category fields visible

Free vs. Pro

Flavor is available in a free version on WordPress.org and a Pro version with all features unlocked.

FeatureFreePro
DishesUnlimitedUnlimited
Categories
Card Grid layout
6 additional layouts
Theme: Elegant Dark
Themes: Light, Earth, Custom
40 Google Fonts
Multiple prices per dish
Badges
Allergens & Nutrition
Guest Ratings
Multiple Locations
QR Code Table Stand
CSV Import / Export
Gutenberg / Elementor / WPBakery

Dishes & Categories

Adding a Dish

Go to Menü → Add New. Every dish has the following fields:

FieldDescription
TitleThe dish name, displayed prominently in all layouts.
DescriptionLong description text (post content). Used in Card Grid, Horizontal and Featured layouts.
SubtitleShort tagline shown below the title (e.g. "with truffle oil").
Price(s)One or more prices with optional labels (e.g. Small / Large).
CategoryAssign to one or more menu categories.
Sort OrderInteger — dishes are sorted ascending. Lower number = appears first.
Featured ImageDish photo — used in card layouts.
BadgeOptional badge (e.g. "Popular", "New", "Vegan"). Pro only.
LocationAssign to one or more restaurant locations. Pro only.
AllergensTick applicable EU allergens. Pro only.
NutritionCalories, fat, carbs, protein per 100g. Pro only.
📷
Screenshot: Full dish edit screen showing all meta fields

Categories

Go to Menü → Categories to manage categories. Categories are hierarchical — you can create parent categories (e.g. "Food") and subcategories (e.g. "Starters", "Main Courses").

💡
Subcategories are displayed as subtle sub-headings within their parent section in all list layouts. In Card Grid, clicking a subcategory in the subnav smoothly scrolls to it.

Category Sort Order

Go to Menü → Category Sort to drag and reorder categories. The order set here controls the display sequence in all layouts.

📷
Screenshot: Category Sort admin page with drag-and-drop handles

Shortcode Reference

The [flavor_menu] shortcode renders the menu on any page or post. All parameters are optional.

[flavor_menu
  title=""
  description=""
  category=""
  location=""
  layout="card-grid"
  style="dark"
  columns="3"
  image_ratio="4-3"
  show_filter="yes"
  hide_all_btn=""
  default_category=""
  show_badges="yes"
  currency="€"
  limit="12"
  el_class=""
]

All Parameters

ParameterDescriptionDefault
titleMenu heading displayed above the filter bar.empty
descriptionSubtitle text below the heading.empty
categorySlug of a category to show only that category (and its children).all
locationSlug(s) of location(s), comma-separated. Filters dishes by location. Proall
layoutOne of: card-grid, price-list, table, horizontal, featured, compact, sectioned. Pro except card-grid.card-grid
styleTheme: dark, light, earth, custom-1, custom-2, custom-3. Pro except dark.dark
columnsNumber of columns: 2, 3 or 4. Applies to card-grid and horizontal layouts. Pro3
image_ratioImage aspect ratio: 4-3, 1-1 or 16-9. Pro4-3
show_filterShow category filter buttons: yes or no.yes
hide_all_btnHide the "All" filter button: yes or no.no
default_categorySlug of the category pre-selected when the page loads.all
show_badgesShow badges on dishes: yes or no. Proyes
currencyCurrency symbol displayed before each price.
limitMaximum number of dishes to load. Max 200.12
el_classExtra CSS class added to the wrapper for custom styling.empty

Examples

[flavor_menu layout="price-list" style="light" title="Our Menu"]
[flavor_menu layout="card-grid" columns="2" category="drinks" currency="$"]
[flavor_menu layout="sectioned" style="earth" location="berlin" limit="50"]

All 7 Layouts

Flavor offers 7 distinct layouts to match any restaurant style. Card Grid is available in the Free version — all others require Pro.

Card Grid Free
Photo cards in a responsive grid with category filter and subcategory scroll.
Price List Pro
Classic restaurant list — name, dot leaders, price. Clean and text-focused.
Table Pro
Structured table format with allergen chips and inline popovers.
Horizontal Card Pro
Landscape photo left, content right. Ideal for featured dishes.
Featured Pro
Hero dish prominently displayed above a smaller card grid.
Compact List Pro
Dense text-only list. Ideal for large menus or drinks cards.
Sectioned List Pro
Categories as prominent section headers, dishes listed below each.

Card Grid Free

The default layout. Dishes displayed as photo cards in a 2–4 column grid. Includes a category filter bar and subcategory scroll navigation.

  • Category filter buttons at the top
  • Subcategory scroll navigation (subnav)
  • Allergens shown as a 180° card flip on click
  • Guest ratings displayed as stars below the price
📷
Screenshot: Card Grid layout — 3 columns, dark theme, with filter bar
[flavor_menu layout="card-grid" columns="3"]

Price List Pro

A classic restaurant menu list. Each row shows dish name, dot leaders and price in a single line. Descriptions appear below the name.

  • Dot leaders between name and price
  • Allergen ⓘ button after dish name → floating popup
  • Multiple prices stacked below the name
📷
Screenshot: Price List layout — light theme
[flavor_menu layout="price-list" style="light"]

Table Pro

A structured table format. Ideal for menus with many dishes across categories. Allergens are shown as abbreviation chips with inline popovers.

📷
Screenshot: Table layout — with allergen chips visible
[flavor_menu layout="table"]

Horizontal Card Pro

Each dish is displayed as a wide card with the photo on the left and content on the right. Allergens trigger a 180° flip showing allergen info and nutrition values.

📷
Screenshot: Horizontal Card layout — earth theme, 2 columns
[flavor_menu layout="horizontal" columns="2"]

Compact List Pro

A dense, text-only list ideal for large menus or drinks cards. Prices appear as chips. Clicking a row opens the allergen popup.

📷
Screenshot: Compact List layout — drinks menu example
[flavor_menu layout="compact"]

Sectioned List Pro

Categories appear as large decorative headings. Dishes are listed beneath each category heading. Ideal for print-style menus.

📷
Screenshot: Sectioned List layout — with ornamental category dividers
[flavor_menu layout="sectioned" style="earth"]

Themes & Colors

Flavor ships with 3 built-in themes and 3 fully customizable custom theme slots.

ThemeShortcode valueAvailability
Elegant DarkdarkFree & Pro
Clean LightlightPro
Warm EarthearthPro
Custom 1custom-1Pro
Custom 2custom-2Pro
Custom 3custom-3Pro

Custom Themes

Go to Menü → Custom Themes to configure up to 3 custom color themes. Each theme has 7 color pickers:

  • Card Background — surface color of dish cards
  • Border Color — subtle separators and outlines
  • Accent Color — prices, badges, highlights
  • Heading Color — dish names and category titles
  • Text Color — descriptions and body text
  • Muted Text — subtitles and secondary info
  • Dot Line Color — price list dot leaders
📷
Screenshot: Custom Themes admin page — color pickers and live preview
💡
The live preview updates in real time as you pick colors. The Preview Background color only affects the admin preview — it is not output on the frontend.

Typography & Fonts Pro

Go to Menü → Typography to set a heading font and a body font for your menu. Choose from 40 curated Google Fonts across 3 groups.

Font Groups

  • Serif — elegant, classic restaurant feel (e.g. Playfair Display, Cormorant Garamond)
  • Sans-Serif — modern, clean (e.g. DM Sans, Inter)
  • Display — decorative, unique (e.g. Josefin Sans, Abril Fatface)

Local Font Caching (GDPR)

Flavor can download font files to your server so no request is made to Google's CDN. Go to Menü → Typography → Local Font Cache and click Download Fonts Locally.

  • Font files are saved to wp-content/uploads/flavor-fonts/
  • Once cached, zero requests leave your domain
  • You can clear the cache at any time to revert to Google CDN
💡
Disable Google Fonts entirely — tick "Disable Google Fonts" to use system font fallbacks only. No font requests are made at all.
📷
Screenshot: Typography admin page — font dropdowns, local cache status, download button

Allergens & Nutrition Pro

Flavor supports all 14 EU mandatory allergens (Regulation 1169/2011) and optional nutritional values per dish.

Setting Up Allergens

In the dish edit screen, scroll to the Allergens & Nutrition meta box. Tick any applicable allergens:

📷
Screenshot: Allergen meta box — 14 checkboxes with EU allergen names

The 14 EU Allergens

Gluten · Crustaceans · Eggs · Fish · Peanuts · Soybeans · Milk · Nuts · Celery · Mustard · Sesame · Sulphites · Lupin · Molluscs

Nutritional Values

Below the allergen checkboxes, enter optional values per 100g: Calories (kcal), Fat (g), Carbohydrates (g), Protein (g).

How Allergens Display per Layout

LayoutDisplay method
Card Gridⓘ badge on card image → click card to flip and see allergens + nutrition
Horizontal CardCard flip → two-column layout (allergens left, nutrition right)
FeaturedClick hero or mini card → flip
Price Listⓘ button after dish name → centered floating popup
Compact Listⓘ button after description → click row to open popup
Sectioned Listⓘ button after dish name → centered floating popup
TableAbbreviation chips below dish name → click chip → inline popover
ℹ️
An allergen legend is automatically generated below the menu, showing only the allergens actually present in the displayed dishes.

Guest Ratings Pro

Allow guests to rate dishes from 1 to 5 stars directly in the Card Grid layout.

Enable Ratings

Go to Menü → Guest Ratings and toggle ratings on. The star widget appears on every dish card.

📷
Screenshot: Guest Ratings admin page — enable toggle and rating overview table

How it Works

  • Guests click a star (1–5) on any dish card
  • Rating is saved per IP address — one vote per dish per visitor
  • Average rating and vote count are displayed below the price
  • Clicking stars on a flippable card does not trigger the allergen flip
⚠️
Card Grid only — Guest Ratings are currently displayed in the Card Grid layout. Other layouts do not show the star widget.

Badges Pro

Badges are small colored labels (e.g. "Popular", "New", "Vegan") that appear on dish cards and in list layouts.

Create a Badge

Go to Menü → Badges. Enter a badge name, choose a background color and an optional emoji. Save.

📷
Screenshot: Badges admin page — badge list with color swatches and emoji

Assign a Badge to a Dish

In the dish edit screen, select a badge from the Badge dropdown in the meta box. Each dish can have one badge.

💡
Hide all badges via the shortcode parameter show_badges="no".

Multiple Locations Pro

If you run multiple restaurant branches, assign dishes to specific locations and show a location-specific menu per page.

Setup

1

Create locations

Go to Menü → Locations and add a location for each branch (e.g. "berlin", "munich").

2

Assign dishes

In each dish's edit screen, tick the applicable location(s) in the Locations meta box.

3

Use the shortcode

Add location="berlin" to your shortcode. Only dishes assigned to that location are shown.

[flavor_menu location="berlin" layout="price-list"]
ℹ️
Dishes with no location assigned appear on all location menus. Use this for dishes available everywhere.

QR Code & Table Stand Pro

Generate a print-ready table stand card with a QR code linking to your menu page — directly from the WordPress admin.

Steps

1

Go to Menü → Table Stand

Enter the URL of your menu page (the page with the [flavor_menu] shortcode).

2

Customize the design

Choose a style (Minimal / Elegant / Branded), paper size (A5 / A6), colors, logo and background image.

3

Save as PDF

Click Save as PDF. The design is rendered at high resolution (~267 DPI for A6) and opens in a new browser tab ready to print.

📷
Screenshot: Table Stand admin page — live preview with QR code, style options, Save as PDF button

CSV Import / Export Pro

Go to Menü → Import / Export to bulk-import dishes from a CSV file or export your entire menu.

CSV Column Format

ColumnRequiredDescription
titleDish name
descriptionLong description text
subtitleShort tagline
categoryCategory name or path using > for subcategories (e.g. Food > Starters)
sort_orderInteger sort order
price_1First price value
price_1_labelLabel for first price (e.g. "Small")
price_2Second price value
price_2_labelLabel for second price
price_3Third price value
price_3_labelLabel for third price
badgeBadge slug
locationLocation slug(s), comma-separated
allergensAllergen slugs, comma-separated (e.g. gluten,milk)
caloriesCalories per 100g
fatFat in grams per 100g
carbsCarbohydrates in grams per 100g
proteinProtein in grams per 100g

Import Behavior

  • Update existing — a dish with the same title is updated, not duplicated
  • Auto-create categories — categories that don't exist are created automatically
  • Preview — the first 5 rows are shown before the actual import runs
  • Result report — each row shows ✓ Created / ↻ Updated / ✗ Error
  • Encoding — UTF-8 (with or without BOM)
  • Separator — comma , or semicolon ; (configurable)
  • Max file size — 2 MB
📷
Screenshot: CSV Import page — file upload, preview table, result report

Page Builders

Flavor integrates natively with Gutenberg, Elementor and WPBakery. All page builders use the same renderer — the output is always identical.

Gutenberg Block

Search for "Flavor Menu" in the Gutenberg block inserter. The block provides dropdowns for all shortcode options — no shortcode knowledge needed.

  • Layout, Theme, Columns, Image Ratio — all configurable in the sidebar panel
  • Category and Location dropdowns are populated from your existing data
  • Preview renders server-side in the editor
📷
Screenshot: Gutenberg editor with Flavor Menu block selected and sidebar panel open

Elementor Widget

In the Elementor editor, search for "Flavor Menu" in the widget panel. Drag it onto the canvas.

  • All options available in the Elementor Content tab
  • Live preview in the Elementor canvas
  • Works with Elementor Free and Elementor Pro
📷
Screenshot: Elementor editor with Flavor Menu widget and content panel

WPBakery

In the WPBakery editor, click Add Element and search for "Flavor Menu".

  • All shortcode parameters available as form fields
  • Works in both Classic and Grid modes
📷
Screenshot: WPBakery element picker with Flavor Menu element

FAQ

Do I need a page builder?

No. Flavor works with the standard WordPress shortcode [flavor_menu] — paste it into any page or post. Page builder integrations (Gutenberg, Elementor, WPBakery) are available but not required.

Will my data be lost when I update the plugin?

No. All dishes, categories, images and settings are stored in the WordPress database. Plugin updates only replace code files — your content remains untouched.

Does it work with my theme?

Yes. Flavor uses fully encapsulated CSS scoped to its own wrapper class .flavor-menu. It does not interfere with your theme's styles.

Can I show different menus for different locations?

Yes. Create locations under Menü → Locations, assign dishes to them, then use the location="slug" shortcode parameter on each page. See the Locations section for full details.

How do I control which dish appears first?

Set the Sort Order field on each dish. Dishes are sorted ascending — a dish with Sort Order 1 appears before one with 10. In the Featured layout, the dish with the lowest sort order becomes the hero.

Can I use multiple menus on one page?

Yes. Place multiple [flavor_menu] shortcodes on a single page — each with different category, layout or location parameters. Each instance is fully independent.

Is the menu responsive?

Yes. All 7 layouts are fully responsive and tested on mobile, tablet and desktop. The column count is automatically reduced on small screens.

How do I translate the plugin?

Flavor uses the WordPress standard translation system (Text Domain: flavor-restaurant-menu). Use a plugin like Loco Translate or WPML to translate admin strings and frontend labels.

The menu doesn't show — what should I check?

  • Is the plugin activated? Go to Plugins and verify.
  • Have you added at least one dish and assigned it to a category?
  • Is the shortcode [flavor_menu] on the page (not just in a widget)?
  • Check the limit parameter — the default is 12. Increase if you have more dishes.