{"id":301433,"date":"2026-04-29T23:17:16","date_gmt":"2026-04-29T23:17:16","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/flavor-restaurant-menu\/"},"modified":"2026-09-20T19:17:06","modified_gmt":"2026-09-20T19:17:06","slug":"flavor-restaurant-menu","status":"publish","type":"plugin","link":"https:\/\/fr-ca.wordpress.org\/plugins\/flavor-restaurant-menu\/","author":23482206,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.4.1","stable_tag":"2.4.1","tested":"7.1.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Flavor \u2013 Restaurant Menu & Table Reservations","header_author":"Flavor Studio","header_description":"A modern, elegant restaurant menu plugin for WordPress. Supports WPBakery, Elementor, Gutenberg and the [flavor_menu] shortcode.","assets_banners_color":"c2b09d","last_updated":"2026-09-20 19:17:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/flavor-menu.com","header_author_uri":"","rating":5,"author_block_rating":0,"active_installs":90,"downloads":3236,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5.10":{"tag":"1.5.10","author":"flavorstudio","date":"2026-06-19 19:47:11","revision":3579164},"1.5.11":{"tag":"1.5.11","author":"flavorstudio","date":"2026-06-26 19:57:11","revision":3587610},"1.5.12":{"tag":"1.5.12","author":"flavorstudio","date":"2026-07-29 22:24:58","revision":3627721},"1.5.13":{"tag":"1.5.13","author":"flavorstudio","date":"2026-08-22 21:41:19","revision":3661214},"1.5.5":{"tag":"1.5.5","author":"flavorstudio","date":"2026-04-29 23:18:22","revision":3519060},"1.5.6":{"tag":"1.5.6","author":"flavorstudio","date":"2026-05-21 20:25:36","revision":3542741},"1.5.7":{"tag":"1.5.7","author":"flavorstudio","date":"2026-05-21 20:49:33","revision":3542762},"1.5.8":{"tag":"1.5.8","author":"flavorstudio","date":"2026-06-14 12:55:03","revision":3571903},"1.5.9":{"tag":"1.5.9","author":"flavorstudio","date":"2026-06-14 21:59:31","revision":3572259},"2.0":{"tag":"2.0","author":"flavorstudio","date":"2026-09-05 18:14:45","revision":3682723},"2.1":{"tag":"2.1","author":"flavorstudio","date":"2026-09-05 21:07:00","revision":3682811},"2.2":{"tag":"2.2","author":"flavorstudio","date":"2026-09-06 00:08:29","revision":3682877},"2.3":{"tag":"2.3","author":"flavorstudio","date":"2026-09-07 13:06:03","revision":3684972},"2.3.1":{"tag":"2.3.1","author":"flavorstudio","date":"2026-09-12 15:24:35","revision":3692872},"2.3.2":{"tag":"2.3.2","author":"flavorstudio","date":"2026-09-12 20:17:08","revision":3693110},"2.4":{"tag":"2.4","author":"flavorstudio","date":"2026-09-14 20:33:55","revision":3695887},"2.4.1":{"tag":"2.4.1","author":"flavorstudio","date":"2026-09-20 19:17:06","revision":3704559}},"upgrade_notice":{"2.4.1":"<p>Minor bug fixes and improvements.<\/p>","2.4":"<p>Adds &quot;Guest left&quot; to free a table early and shows the right day after adding a reservation.<\/p>","2.3.2":"<p>Renames the plugin and fixes the booking form and the Elementor preview. Nothing changes for your menu or bookings.<\/p>","2.3.1":"<p>Translates the block settings in the block editor and renames the menu block to &quot;Menu Card&quot;.<\/p>","2.3":"<p>Fixes a display glitch in the admin panel that could show up with some themes.<\/p>","2.2":"<p>Adds bulk actions and a trash view to the dishes list. No action required.<\/p>","2.1":"<p>Maintenance release. No action required.<\/p>","2.0":"<p>Flavor moves into its own admin panel and gains online table reservations. All existing dishes, categories and settings are kept.<\/p>","1.5.13":"<p>Fixes the position of currency symbols such as $, \u00a3 and \u00a5 (now shown before the amount). No action required.<\/p>","1.5.12":"<p>New sticky category bar (on by default) and a higher dish limit \u2014 up to 999, default 150. No action required.<\/p>","1.5.11":"<p>The Get Started checklist now guides Elementor and WPBakery users to the native widget. No action required.<\/p>","1.5.10":"<p>Maintenance and minor improvements. Recommended for all users.<\/p>","1.5.9":"<p>Adds a guided &quot;Get Started&quot; setup checklist. No action required.<\/p>","1.5.8":"<p>Fixes Card Grid titles and text taking the surrounding theme&#039;s colors instead of the selected Flavor theme. No action required.<\/p>","1.5.7":"<p>Fixes garbled German umlauts in the admin (1.5.6 .mo file had broken UTF-8 encoding). Recommended for all German installations.<\/p>","1.5.6":"<p>Complete German translation and WordPress 7.0 compatibility.<\/p>","1.5.5":"<p>Documentation links added to admin pages and plugin list.<\/p>","1.5.3":"<p>New Pro feature: CSV Import \/ Export for dishes. Import from Excel\/Google Sheets CSV, export all dishes, download empty template.<\/p>","1.5.2":"<p>New &quot;Download Fonts Locally&quot; feature in Menu \u2192 Typography for GDPR-compliant font delivery without external requests to Google.<\/p>","1.5.1":"<p>Vendor scripts are now bundled locally. If you previously saw console errors about blocked CDN requests, this update resolves them.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3519055,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3519055,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3682722,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3682722,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3704559,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"login\":true,\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"flavor-restaurant-menu\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire_once \\\"\\\/wordpress\\\/wp-load.php\\\";\\nrequire_once ABSPATH . \\\"wp-admin\\\/includes\\\/media.php\\\";\\nrequire_once ABSPATH . \\\"wp-admin\\\/includes\\\/file.php\\\";\\nrequire_once ABSPATH . \\\"wp-admin\\\/includes\\\/image.php\\\";\\nadd_filter(\\\"intermediate_image_sizes_advanced\\\", \\\"__return_empty_array\\\");\\nadd_filter(\\\"http_request_args\\\", function ($args) { $args[\\\"timeout\\\"] = 10; return $args; });\\n$img_deadline = time() + 45;\\n$cats = array();\\nforeach (array(\\\"Starters\\\", \\\"Mains\\\", \\\"Desserts\\\", \\\"Drinks\\\") as $c) {\\n    $t = wp_insert_term($c, \\\"flavor_menu_cat\\\");\\n    if (!is_wp_error($t)) { $cats[$c] = (int) $t[\\\"term_id\\\"]; }\\n}\\n$dishes = array(\\n    array(\\\"Burrata & Heirloom Tomato\\\", \\\"basil oil \\u00b7 aged balsamic \\u00b7 sourdough\\\", \\\"12.50\\\", \\\"Starters\\\", \\\"bowl\\\"),\\n    array(\\\"Tuna Tataki\\\", \\\"sesame crust \\u00b7 ponzu \\u00b7 avocado\\\", \\\"16.00\\\", \\\"Starters\\\", \\\"tuna\\\"),\\n    array(\\\"Dry-Aged Ribeye\\\", \\\"300 g \\u00b7 chimichurri \\u00b7 confit garlic\\\", \\\"32.00\\\", \\\"Mains\\\", \\\"ribeye\\\"),\\n    array(\\\"Wild Salmon\\\", \\\"fennel \\u00b7 dill \\u00b7 brown butter\\\", \\\"26.50\\\", \\\"Mains\\\", \\\"salmon\\\"),\\n    array(\\\"Saffron Risotto\\\", \\\"carnaroli \\u00b7 parmesan crisp\\\", \\\"21.00\\\", \\\"Mains\\\", \\\"risotto\\\"),\\n    array(\\\"Tagliatelle al Tartufo\\\", \\\"fresh truffle \\u00b7 pecorino\\\", \\\"24.00\\\", \\\"Mains\\\", \\\"pasta\\\"),\\n    array(\\\"Tiramisu\\\", \\\"espresso \\u00b7 mascarpone \\u00b7 cocoa\\\", \\\"9.50\\\", \\\"Desserts\\\", \\\"tiramisu\\\"),\\n    array(\\\"Chocolate Fondant\\\", \\\"valrhona \\u00b7 vanilla ice cream\\\", \\\"10.50\\\", \\\"Desserts\\\", \\\"fondant\\\"),\\n    array(\\\"Negroni\\\", \\\"gin \\u00b7 campari \\u00b7 vermouth\\\", \\\"11.90\\\", \\\"Drinks\\\", \\\"negroni\\\"),\\n    array(\\\"Espresso Martini\\\", \\\"vodka \\u00b7 coffee liqueur \\u00b7 espresso\\\", \\\"12.90\\\", \\\"Drinks\\\", \\\"espressomartini\\\")\\n);\\n$i = 0;\\nforeach ($dishes as $d) {\\n    $i++;\\n    $pid = wp_insert_post(array(\\\"post_type\\\" => \\\"flavor_menu_item\\\", \\\"post_title\\\" => $d[0], \\\"post_status\\\" => \\\"publish\\\"));\\n    if (is_wp_error($pid) || !$pid) { continue; }\\n    update_post_meta($pid, \\\"_flavor_prices\\\", array(array(\\\"label\\\" => \\\"\\\", \\\"price\\\" => $d[2])));\\n    update_post_meta($pid, \\\"_flavor_subtitle\\\", $d[1]);\\n    update_post_meta($pid, \\\"_flavor_sort_order\\\", $i);\\n    if (isset($cats[$d[3]])) { wp_set_object_terms($pid, array($cats[$d[3]]), \\\"flavor_menu_cat\\\"); }\\n    if (time() < $img_deadline) {\\n        $att = media_sideload_image(\\\"https:\\\/\\\/flavor-menu.com\\\/images\\\/\\\" . $d[4] . \\\".jpg\\\", $pid, $d[0], \\\"id\\\");\\n        if (!is_wp_error($att)) { set_post_thumbnail($pid, $att); }\\n    }\\n}\\n$parts = array('[flavor_menu title=\\\"Osteria Vista\\\" description=\\\"Seasonal kitchen \\u00b7 powered by Flavor\\\" show_filter=\\\"yes\\\" limit=\\\"24\\\"]');\\nif (shortcode_exists(\\\"flavor_reservation\\\")) {\\n    update_option(\\\"flavor_reservation_settings\\\", array(\\\"contact_phone\\\" => \\\"+49 30 5550 1234\\\"));\\n    $parts[] = '[flavor_reservation style=\\\"dark\\\" title=\\\"Book a table\\\" intro=\\\"Choose a date and time \\u2014 you will get an e-mail as soon as we confirm.\\\"]';\\n}\\n$page_id = wp_insert_post(array(\\\"post_type\\\" => \\\"page\\\", \\\"post_title\\\" => \\\"Our Menu\\\", \\\"post_name\\\" => \\\"menu\\\", \\\"post_status\\\" => \\\"publish\\\",\\n    \\\"post_content\\\" => implode(PHP_EOL . PHP_EOL, $parts)));\\nif ($page_id && !is_wp_error($page_id)) {\\n    update_option(\\\"show_on_front\\\", \\\"page\\\");\\n    update_option(\\\"page_on_front\\\", $page_id);\\n}\"}]}"}},"all_blocks":{"flavor-menu\/reservation":{"name":"flavor-menu\/reservation","title":"Reservation Form"},"flavor-menu\/menu":{"name":"flavor-menu\/menu","title":"Menu Card"}},"tagged_versions":["1.5.10","1.5.11","1.5.12","1.5.13","1.5.5","1.5.6","1.5.7","1.5.8","1.5.9","2.0","2.1","2.2","2.3","2.3.1","2.3.2","2.4","2.4.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3682722,"resolution":"1","location":"assets","locale":"","width":1553,"height":743},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3682722,"resolution":"2","location":"assets","locale":"","width":1471,"height":746},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3682722,"resolution":"3","location":"assets","locale":"","width":1100,"height":773},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3682722,"resolution":"4","location":"assets","locale":"","width":1369,"height":743},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3682722,"resolution":"5","location":"assets","locale":"","width":1529,"height":784},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3682722,"resolution":"6","location":"assets","locale":"","width":1293,"height":853},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3682722,"resolution":"7","location":"assets","locale":"","width":1139,"height":780},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3682722,"resolution":"8","location":"assets","locale":"","width":717,"height":797}},"screenshots":{"1":"The Flavor panel \u2014 your menu, reservations and settings in one workspace, without hunting through WordPress submenus","2":"Dishes \u2014 filter by category or status, sort, and page through the whole menu","3":"The dish editor \u2014 name, description, photo, subtitle, price and sort order on one screen, no block editor needed","4":"Categories \u2014 create, rename, delete and drag into order, subcategories included","5":"Reservations \u2014 the day at a glance, with open requests waiting to be approved right at the top","6":"Reservation settings \u2014 slot interval, lead time, party size cap, capacity, turn time and opening hours","7":"Card Grid on the frontend \u2014 the Elegant Dark theme with the animated category filter","8":"The guest booking form \u2014 nine fields, no guest account needed, confirmed by e-mail"}},"plugin_section":[],"plugin_tags":[157429,126510,30524,23280,34020],"plugin_category":[],"plugin_contributors":[261464],"plugin_business_model":[],"class_list":["post-301433","plugin","type-plugin","status-publish","hentry","plugin_tags-allergens","plugin_tags-digital-menu","plugin_tags-food-menu","plugin_tags-restaurant-menu","plugin_tags-table-reservation","plugin_contributors-flavorstudio","plugin_committers-flavorstudio"],"banners":{"banner":"https:\/\/ps.w.org\/flavor-restaurant-menu\/assets\/banner-772x250.png?rev=3682722","banner_2x":"https:\/\/ps.w.org\/flavor-restaurant-menu\/assets\/banner-1544x500.png?rev=3682722","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/flavor-restaurant-menu\/assets\/icon-128x128.png?rev=3519055","icon_2x":"https:\/\/ps.w.org\/flavor-restaurant-menu\/assets\/icon-256x256.png?rev=3519055","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/flavor-restaurant-menu\/assets\/screenshot-1.png?rev=3682722","caption":"The Flavor panel \u2014 your menu, reservations and settings in one workspace, without hunting through WordPress submenus"},{"src":"https:\/\/ps.w.org\/flavor-restaurant-menu\/assets\/screenshot-2.png?rev=3682722","caption":"Dishes \u2014 filter by category or status, sort, and page through the whole menu"},{"src":"https:\/\/ps.w.org\/flavor-restaurant-menu\/assets\/screenshot-3.png?rev=3682722","caption":"The dish editor \u2014 name, description, photo, subtitle, price and sort order on one screen, no block editor needed"},{"src":"https:\/\/ps.w.org\/flavor-restaurant-menu\/assets\/screenshot-4.png?rev=3682722","caption":"Categories \u2014 create, rename, delete and drag into order, subcategories included"},{"src":"https:\/\/ps.w.org\/flavor-restaurant-menu\/assets\/screenshot-5.png?rev=3682722","caption":"Reservations \u2014 the day at a glance, with open requests waiting to be approved right at the top"},{"src":"https:\/\/ps.w.org\/flavor-restaurant-menu\/assets\/screenshot-6.png?rev=3682722","caption":"Reservation settings \u2014 slot interval, lead time, party size cap, capacity, turn time and opening hours"},{"src":"https:\/\/ps.w.org\/flavor-restaurant-menu\/assets\/screenshot-7.png?rev=3682722","caption":"Card Grid on the frontend \u2014 the Elegant Dark theme with the animated category filter"},{"src":"https:\/\/ps.w.org\/flavor-restaurant-menu\/assets\/screenshot-8.png?rev=3682722","caption":"The guest booking form \u2014 nine fields, no guest account needed, confirmed by e-mail"}],"raw_content":"<!--section=description-->\n<h4>\ud83c\udf89 Flavor 2.0 is here<\/h4>\n\n<p><strong>The biggest release so far \u2014 a workspace of its own, and online table reservations.<\/strong><\/p>\n\n<ul>\n<li><strong>Flavor now opens in its own admin panel.<\/strong> No more hunting through WordPress submenus: one Flavor entry leads to a proper workspace with a fixed two-level navigation, a dashboard, a streamlined dish editor and a setup checklist that ticks itself off as you go. Light and dark mode included.<\/li>\n<li><strong>Take table bookings on your own website.<\/strong> Guests request a table from a booking form; you approve or decline straight from the e-mail or from the panel. Opening hours and closed days, a capacity limit, turn time, confirmation e-mails with a calendar file and a one-click cancellation link, an approval inbox, search by name, phone or e-mail \u2014 and old bookings are deleted automatically.<\/li>\n<li><strong>Nothing you built is lost.<\/strong> Every dish, category, setting and shortcode carries over untouched. Only the interface around them is new.<\/li>\n<\/ul>\n\n<p>Upgrading is the normal one-click update. If you use Flavor Pro, update both plugins.<\/p>\n\n<h4>What Flavor does<\/h4>\n\n<p><strong>Flavor \u2013 Restaurant Menu &amp; Table Reservations<\/strong> is a modern WordPress restaurant menu plugin for restaurants, caf\u00e9s and bars. Create mobile-friendly food menus with categories, images, prices and a responsive card grid \u2014 then display them anywhere with a shortcode, Gutenberg block, Elementor widget or WPBakery element. Take table bookings from your own website with the built-in reservation form. No WooCommerce required. QR code table stands, EU allergen labels and multiple layouts are available in Flavor Pro.<\/p>\n\n<h4>What you get for free<\/h4>\n\n<p><strong>The workspace<\/strong><\/p>\n\n<ul>\n<li><strong>Standalone admin panel<\/strong> \u2014 One Flavor entry in the sidebar opens a proper workspace: fixed two-level navigation, dashboard, dedicated dish editor, light and dark mode, and a setup checklist that ticks itself off from the real state of your site<\/li>\n<li><strong>Unlimited dishes<\/strong> \u2014 No cap, no trial. Categories, price, description, featured image and sort order<\/li>\n<li><strong>Categories<\/strong> \u2014 Hierarchical, with drag &amp; drop ordering, renaming and deleting on one screen<\/li>\n<\/ul>\n\n<p><strong>The menu on your site<\/strong><\/p>\n\n<ul>\n<li><strong>Card Grid layout<\/strong> \u2014 Responsive image cards with the built-in Elegant Dark theme<\/li>\n<li><strong>Category filter<\/strong> \u2014 Animated filtering on the frontend, optionally sticky while scrolling<\/li>\n<li><strong>Subcategories<\/strong> \u2014 Shown as section headings when a parent category is filtered<\/li>\n<li><strong>Currency<\/strong> \u2014 Any symbol, placed before or after the amount; the side is detected automatically, so <code>$32.00<\/code> but <code>32.00 \u20ac<\/code><\/li>\n<li><strong>All page builders<\/strong> \u2014 Gutenberg block, Elementor widget and WPBakery element, plus the <code>[flavor_menu]<\/code> shortcode for everything else<\/li>\n<\/ul>\n\n<p><strong>Table reservations<\/strong><\/p>\n\n<ul>\n<li><strong>A booking form on your own website<\/strong> \u2014 <code>[flavor_reservation]<\/code> or the matching block, widget and element. Nine fields, spam honeypot, rate limit, works without JavaScript<\/li>\n<li><strong>You decide on every request<\/strong> \u2014 Approve or decline from the notification e-mail or from the panel; the guest is informed either way<\/li>\n<li><strong>Opening hours that match reality<\/strong> \u2014 Per weekday, closed days, lead time, how far ahead guests may book, a capacity limit and a turn time that can grow with party size. Hours past midnight are handled as one business day<\/li>\n<li><strong>E-mails that do the work<\/strong> \u2014 Confirmation with a calendar file and a one-click cancellation link for the guest, a notification with occupancy context for you<\/li>\n<li><strong>Daily service board<\/strong> \u2014 Today's bookings with the day's covers and the busiest moment, an approval inbox, search by name, phone or e-mail, an overdue marker and a nudge for past bookings nobody closed<\/li>\n<li><strong>Tables free up when guests leave<\/strong> \u2014 One click on \"Guest left\" and the seats count as free again straight away, instead of when the usual time is up<\/li>\n<li><strong>Data protection built in<\/strong> \u2014 Consent checkbox, and old bookings are deleted automatically after a number of days you choose<\/li>\n<\/ul>\n\n<h4>Flavor Pro<\/h4>\n\n<p>Pro is a <strong>separate plugin<\/strong> available at <a href=\"https:\/\/flavor-menu.com\">flavor-menu.com<\/a>. Install it alongside this one and every Pro feature unlocks automatically \u2014 nothing is migrated, nothing is re-entered.<\/p>\n\n<ul>\n<li><strong>Multiple prices<\/strong> \u2014 Unlimited price variants per dish with labels (e.g. Small \/ Large, 0.2 l \/ 0.75 l)<\/li>\n<li><strong>7 Layouts<\/strong> \u2014 Card Grid, Price List, Table, Horizontal Card, Featured, Compact List, Sectioned List<\/li>\n<li><strong>6 Design Themes<\/strong> \u2014 Elegant Dark, Clean Light, Warm Earth + 3 fully configurable Custom Themes with 7 color pickers each<\/li>\n<li><strong>40 Google Fonts<\/strong> \u2014 Curated Serif, Sans-Serif and Display fonts under Design \u2192 Typography. Optional local self-hosting for GDPR-compliant delivery<\/li>\n<li><strong>Allergens &amp; Nutrition<\/strong> \u2014 14 EU mandatory allergens (Regulation 1169\/2011) + nutritional values per 100 g. Layout-specific display: 180\u00b0 flip (cards), floating popup (lists), abbreviation chips (table)<\/li>\n<li><strong>Guest Ratings<\/strong> \u2014 1\u20135 star ratings in the Card Grid layout. No login required. Duplicate protection via localStorage + server-side IP hash<\/li>\n<li><strong>Room planner &amp; seating<\/strong> \u2014 Draw your restaurant once \u2014 rooms, walls, doors, decor and tables to scale \u2014 then seat guests at real tables instead of guessing from a list: live room view, table suggestions, moving guests between tables, walk-ins and a per-table timeline<\/li>\n<li><strong>Reservation analytics<\/strong> \u2014 Covers per day and per hour, no-show rate and average party size over 7, 30 or 90 days<\/li>\n<li><strong>Multiple Locations<\/strong> \u2014 Assign dishes to one or more branches and filter per location in the shortcode. Each branch keeps its own opening hours, capacity, floor plan and reservation inbox<\/li>\n<li><strong>Badge System<\/strong> \u2014 New, Popular, Chef's Choice, Seasonal, Spicy and more<\/li>\n<li><strong>QR Code \/ Table Stand<\/strong> \u2014 Print-ready table stands as PDF. 3 styles (Minimal, Elegant, Branded), DIN A5\/A6, logo upload, background image, 4 color pickers, live preview<\/li>\n<li><strong>CSV Import \/ Export<\/strong> \u2014 Import dishes from CSV (Excel\/Google Sheets compatible). Supports all dish fields: title, description, subtitle, categories (incl. subcategories via <code>Food &gt; Starters<\/code>), prices with labels, badges, locations, allergens, nutrition values. Missing categories are auto-created. Existing dishes (matched by title) are updated. Configurable delimiter (comma or semicolon). Preview before import, per-row result report. Export all dishes as CSV. Downloadable empty template.<\/li>\n<li><strong>SEO \/ Schema.org markup<\/strong> \u2014 Every menu outputs Schema.org structured data (JSON-LD): <code>Menu<\/code>, <code>MenuSection<\/code> and <code>MenuItem<\/code> with prices (<code>Offer<\/code>) and nutrition (<code>NutritionInformation<\/code>), so search engines and AI assistants can read your menu. No configuration required, works in every layout<\/li>\n<li><strong>Columns &amp; Image Ratio<\/strong> \u2014 2\/3\/4 columns, 4:3\/1:1\/16:9 image ratio<\/li>\n<li><strong>Subcategory Support<\/strong> \u2014 Hierarchical categories with parent and sub-headings in all layouts<\/li>\n<\/ul>\n\n<h4>Page Builder Support<\/h4>\n\n<ul>\n<li>Gutenberg (native block, live preview in editor)<\/li>\n<li>Elementor Free 3.5+<\/li>\n<li>WPBakery Page Builder<\/li>\n<\/ul>\n\n<h4>Shortcode<\/h4>\n\n<pre><code>[flavor_menu title=\"Our Menu\"]\n<\/code><\/pre>\n\n<p>Available parameters: <code>title<\/code>, <code>description<\/code>, <code>category<\/code>, <code>limit<\/code>, <code>show_filter<\/code>, <code>sticky_filter<\/code>, <code>hide_all_btn<\/code>, <code>default_category<\/code>, <code>currency<\/code>, <code>currency_position<\/code>, <code>el_class<\/code><\/p>\n\n<pre><code>[flavor_reservation title=\"Book a table\"]\n<\/code><\/pre>\n\n<p>Available parameters: <code>title<\/code>, <code>intro<\/code>, <code>style<\/code> (light \/ dark), <code>el_class<\/code><\/p>\n\n<h3>External Services<\/h3>\n\n<p>Your menu and your reservations never leave your server. All assets (CSS, JavaScript, fonts) are bundled with the plugin and served from your own site, and no menu, dish, guest or booking data is ever sent anywhere.<\/p>\n\n<p>The plugin does use one external service, and only if you choose it:<\/p>\n\n<h4>Freemius (opt-in, disabled by default)<\/h4>\n\n<p>Flavor uses Freemius to deliver update notices and security warnings, and to handle license activation for the separate Flavor Pro plugin. <strong>Nothing is transmitted until you click \"Allow &amp; Continue\" on the opt-in screen.<\/strong> If you skip it, the plugin works exactly the same and no connection is made.<\/p>\n\n<p>If you do opt in, the following is sent to freemius.com and refreshed periodically:<\/p>\n\n<ul>\n<li>Your WordPress user's first name, last name and e-mail address<\/li>\n<li>Your site's homepage URL and title, WordPress and PHP versions, and site language<\/li>\n<li>The Flavor plugin and SDK versions, and whether the plugin is active or was uninstalled<\/li>\n<li>The names, slugs, versions and active state of your installed plugins and themes<\/li>\n<\/ul>\n\n<p>You can withdraw consent at any time \u2014 open <strong>Flavor \u2192 Account<\/strong> and choose <em>Disconnect<\/em>, or use the opt-out link on the plugin's row under <strong>Plugins<\/strong>. Transmission stops immediately, and the plugin keeps working.<\/p>\n\n<p>What is collected and why: <a href=\"https:\/\/freemius.com\/product\/opt-in\/27618\/flavor-restaurant-menu\/\">freemius.com\/product\/opt-in\/27618\/flavor-restaurant-menu\/<\/a> \u2014 Terms of Service: <a href=\"https:\/\/freemius.com\/terms\/\">freemius.com\/terms\/<\/a> \u2014 Privacy Policy: <a href=\"https:\/\/freemius.com\/privacy\/\">freemius.com\/privacy\/<\/a><\/p>\n\n<h4>Table reservations<\/h4>\n\n<p>Reservation e-mails to you and your guests are sent with WordPress' own <code>wp_mail()<\/code>, so they travel through whatever mail setup your site already uses. No booking data is sent to us or to any third party.<\/p>\n\n<!--section=installation-->\n<h4>Install<\/h4>\n\n<ol>\n<li>Install from <strong>Plugins \u2192 Add New<\/strong> and search for \"Flavor\", or upload the <code>flavor-restaurant-menu<\/code> folder to <code>\/wp-content\/plugins\/<\/code> via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu.<\/li>\n<li>A new <strong>Flavor<\/strong> entry appears in the WordPress sidebar. Everything lives there.<\/li>\n<\/ol>\n\n<h4>Quick Start<\/h4>\n\n<p>Open <strong>Flavor<\/strong> and follow the setup checklist behind the icon in the top right \u2014 it tracks these steps for you:<\/p>\n\n<ol>\n<li><strong>Create categories<\/strong> \u2014 <em>Menu \u2192 Categories<\/em>, e.g. \"Food\" with the subcategories \"Starters\" and \"Main Courses\". Drag them into the order you want; the same screen renames and deletes them.<\/li>\n<li><strong>Add dishes<\/strong> \u2014 <em>Menu \u2192 Dishes \u2192 Add dish<\/em>: name, description, price, photo and sort order.<\/li>\n<li><strong>Put the menu on a page<\/strong> \u2014 add the <strong>Menu Card<\/strong> block (Gutenberg), the Elementor widget or the WPBakery element, all under the category <strong>Flavor Restaurant<\/strong> \u2014 or paste the shortcode <code>[flavor_menu]<\/code>. The checklist can create a ready-made page for you in one click.<\/li>\n<\/ol>\n\n<h4>Optional: take table bookings<\/h4>\n\n<ol>\n<li>Set your opening hours, capacity and turn time under <strong>Flavor \u2192 Reservations \u2192 Settings<\/strong>, and enter the address that should receive requests.<\/li>\n<li>Put the <strong>Reservation Form<\/strong> element \u2014 or the shortcode <code>[flavor_reservation]<\/code> \u2014 on a page.<\/li>\n<li>New requests land under <strong>Flavor \u2192 Reservations \u2192 Service<\/strong>, with a counter on the menu entry. Approve or decline there or straight from the notification e-mail; the guest is informed either way.<\/li>\n<\/ol>\n\n<h4>Upgrading from 1.5.x<\/h4>\n\n<p>Just run the update. Dishes, categories, settings and shortcodes are untouched \u2014 the admin interface is what changed. The old submenus are gone; everything they held now sits inside the Flavor panel.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20elementor%20or%20wpbakery%3F\"><h3>Do I need Elementor or WPBakery?<\/h3><\/dt>\n<dd><p>No. The plugin works with the Gutenberg block editor that comes built into WordPress. Elementor and WPBakery are optional.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20load%20any%20external%20scripts%20or%20services%3F\"><h3>Does the plugin load any external scripts or services?<\/h3><\/dt>\n<dd><p>No external scripts: every stylesheet, script and font ships with the plugin and is served from your own site. Your menu, dishes and reservations stay on your server and are never sent anywhere.<\/p>\n\n<p>The one exception is Freemius, which handles update notices and license activation \u2014 and only after you accept its opt-in screen. Skip it and no connection is made at all. See <strong>External Services<\/strong> above for exactly what is transmitted if you accept.<\/p><\/dd>\n<dt id=\"how%20do%20i%20reorder%20categories%3F\"><h3>How do I reorder categories?<\/h3><\/dt>\n<dd><p>Go to <strong>Flavor \u2192 Menu \u2192 Categories<\/strong> and drag the categories into the desired order. The same screen lets you rename and delete them.<\/p><\/dd>\n<dt id=\"can%20i%20display%20subcategories%3F\"><h3>Can I display subcategories?<\/h3><\/dt>\n<dd><p>Yes. When filtering by a parent category in the Card Grid, subcategories are shown as section headings. Create subcategories by picking a parent under Flavor \u2192 Menu \u2192 Categories.<\/p><\/dd>\n<dt id=\"do%20the%20table%20reservations%20cost%20extra%3F\"><h3>Do the table reservations cost extra?<\/h3><\/dt>\n<dd><p>No. The booking form, the approval flow, the e-mails, the opening hours and the service board are all in the free version. Pro adds the visual floor plan with table assignment and walk-ins, the analytics, and per-branch settings for restaurants with several locations.<\/p><\/dd>\n<dt id=\"do%20guests%20need%20an%20account%20to%20book%20a%20table%3F\"><h3>Do guests need an account to book a table?<\/h3><\/dt>\n<dd><p>No. A guest fills in the form and receives a confirmation e-mail with a calendar file and a link to cancel. Nothing is stored beyond the booking itself, and old bookings are deleted automatically after a period you set.<\/p><\/dd>\n<dt id=\"i%20updated%20to%202.0%20and%20my%20flavor%20submenus%20are%20gone.%20where%20is%20everything%3F\"><h3>I updated to 2.0 and my Flavor submenus are gone. Where is everything?<\/h3><\/dt>\n<dd><p>It all moved into the new Flavor panel. Click <strong>Flavor<\/strong> in the sidebar: dishes and categories under <em>Menu<\/em>, the design and add-on screens in their own sections, and reservations under <em>Reservations<\/em>. No data or setting was changed \u2014 only where you reach it.<\/p><\/dd>\n<dt id=\"where%20can%20i%20find%20allergens%2C%20multiple%20layouts%20and%20other%20pro%20features%3F\"><h3>Where can I find allergens, multiple layouts and other Pro features?<\/h3><\/dt>\n<dd><p>These are available in <strong>Flavor Pro<\/strong>, a separate plugin at <a href=\"https:\/\/flavor-menu.com\">flavor-menu.com<\/a>. Installing Flavor Pro alongside this plugin automatically unlocks all Pro features.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.4.1<\/h4>\n\n<ul>\n<li>Minor bug fixes and improvements.<\/li>\n<\/ul>\n\n<h4>2.4<\/h4>\n\n<ul>\n<li>New: \"Guest left\" frees the seats the moment a guest leaves, so availability is right again straight away. Pressed by mistake? \"Back at the table\" undoes it.<\/li>\n<li>Improved: \"Create menu page for me\" in the setup checklist now adds a Menu Card block, so the menu's settings are right there in the block sidebar.<\/li>\n<li>Fixed: the menu and reservation blocks looked unstyled in the block editor preview. Published pages were not affected.<\/li>\n<li>Fixed: after adding a reservation, the list now shows the day of that booking.<\/li>\n<li><strong>In Pro:<\/strong> a new room editor with rooms, walls, decor and tables to scale, moving guests between tables, and a warning when a walk-in's table is needed again soon.<\/li>\n<\/ul>\n\n<h4>2.3.2<\/h4>\n\n<ul>\n<li>Changed: the plugin is now called \"Flavor \u2013 Restaurant Menu &amp; Table Reservations\", so the name says what it does.<\/li>\n<li>Fixed: the menu and the reservation form looked unstyled in the Elementor editor preview. Published pages were not affected.<\/li>\n<li>Fixed: with block themes such as Twenty Twenty-Five, the booking form said every day was closed.<\/li>\n<li>Fixed: the booking form offered times that had already passed today. It now only shows times that can still be booked, and a day whose times are over no longer claims to be closed.<\/li>\n<li>Fixed: when a booking could not be sent, the form now says under each field what is wrong.<\/li>\n<li><strong>In Pro:<\/strong> the CSV import shows its progress indicator again, and adding a second location before any reservation had been made no longer costs the first location its floor plan and current opening hours and capacity.<\/li>\n<\/ul>\n\n<h4>2.3.1<\/h4>\n\n<ul>\n<li>Fixed: the settings of the menu and reservation blocks in the block editor were always shown in English.<\/li>\n<li>Changed: the menu block in the block editor is now called \"Menu Card\", like the Elementor and WPBakery elements.<\/li>\n<li>Improved: the admin panel's styles are better isolated from icon fonts that some themes and plugins load.<\/li>\n<li>Fixed: renaming or deleting a category showed no confirmation, or repeated an earlier one.<\/li>\n<li><strong>In Pro:<\/strong> fixes for the Menu Card block preview in the block editor and a few mislabelled fields in the badge editor, and a preselected location in the \"Add reservation\" dialog.<\/li>\n<\/ul>\n\n<h4>2.3<\/h4>\n\n<ul>\n<li>Fixed: a display glitch in the admin panel that could show up with some themes.<\/li>\n<\/ul>\n\n<h4>2.2<\/h4>\n\n<ul>\n<li>Fixed (Pro): the dish form in the admin panel had no location picker since 2.0. The card is back; in the free plugin it explains what locations do.<\/li>\n<li>New: the dishes list has a trash view. Trashed dishes used to disappear from the panel with no way back \u2014 you can now find, restore and permanently delete them.<\/li>\n<li>New: bulk actions on the dishes list. Tick any number of dishes and publish them, set them to draft, move them to the trash, or add and remove a category in one go.<\/li>\n<\/ul>\n\n<h4>2.1<\/h4>\n\n<ul>\n<li>Fixed: admin styles and scripts are versioned per file again, so a correction reaches the browser without a hard refresh instead of being served from the cache.<\/li>\n<li>Maintenance: the shared reservation code is back in line with the Pro release.<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li><strong>New: standalone admin panel<\/strong> \u2014 Flavor now opens in its own modern, app-like workspace instead of being scattered across WordPress submenus. A fixed two-level navigation groups everything (Menu, Reservations, Design, Add-ons, Tools, Locations, Settings), dishes get their own streamlined editor, and a \"Get Started\" checklist tracks your setup. Every existing setting is preserved.<\/li>\n<li><strong>New: online table reservations<\/strong> \u2014 Guests request a table from a booking form (<code>[flavor_reservation]<\/code> shortcode plus Gutenberg, Elementor and WPBakery elements); you approve or decline each one straight from the e-mail or from the panel. Includes opening hours and closed days (also across midnight), a capacity limit, turn time, confirmation e-mails with a calendar file and a one-click cancellation link, an approval inbox, search by name, phone or e-mail, and automatic deletion of old bookings.<\/li>\n<li><strong>Categories<\/strong> can now be renamed and deleted directly on the category screen. Renaming keeps the slug, so existing shortcodes and page-builder elements keep working.<\/li>\n<li>New in Pro: floor plan with drag-and-drop table assignment, walk-ins, reservation analytics and per-branch reservation settings.<\/li>\n<li><strong>Sticky category bar is now off by default<\/strong> \u2014 The category filter bar introduced in 1.5.12 was pinned to the top on every menu, which changed how existing menus looked after updating and does not display correctly in every theme. It is now opt-in: switch it on per menu with the \"Sticky Category Bar\" control in the shortcode and in the Gutenberg, Elementor and WPBakery elements.<\/li>\n<li>Maintenance, translations and minor improvements.<\/li>\n<\/ul>\n\n<h4>1.5.13<\/h4>\n\n<ul>\n<li><strong>Fix: currency symbol position<\/strong> \u2014 Currency symbols that belong before the amount (e.g. $, \u00a3, \u00a5) are now placed correctly \u2014 \"$32.00\" instead of \"32.00 $\". The side is detected automatically from the symbol, and a new \"Currency Position\" control (Automatic \/ After amount \/ Before amount) lets you override it per menu in the shortcode and the Gutenberg, Elementor and WPBakery controls.<\/li>\n<\/ul>\n\n<h4>1.5.12<\/h4>\n\n<ul>\n<li><strong>Sticky category bar<\/strong> \u2014 The category filter bar can now stay pinned to the top of the screen while visitors scroll through a long menu. On by default; toggle it per menu with the new <code>sticky_filter<\/code> option in the shortcode and in the Gutenberg, Elementor and WPBakery controls.<\/li>\n<li><strong>More dishes per menu<\/strong> \u2014 The maximum number of dishes shown in one menu is raised from 200 to 999, and the default is now 150 (previously 12).<\/li>\n<li>Maintenance and minor improvements.<\/li>\n<\/ul>\n\n<h4>1.5.11<\/h4>\n\n<ul>\n<li><strong>Onboarding: page-builder guidance<\/strong> \u2014 The \"Get Started\" checklist now detects Elementor and WPBakery and points you to the native \"Menu Card\" widget\/element instead of the shortcode, plus a Documentation link to the shortcode reference.<\/li>\n<li>Maintenance and minor improvements.<\/li>\n<\/ul>\n\n<h4>1.5.10<\/h4>\n\n<ul>\n<li>Maintenance and minor improvements.<\/li>\n<\/ul>\n\n<h4>1.5.9<\/h4>\n\n<ul>\n<li><strong>Guided setup<\/strong> \u2014 A new \"Get Started\" checklist walks you from your first category to a live menu. Steps tick off automatically as you go, and one click can create a menu page for you.<\/li>\n<li>Maintenance and minor improvements.<\/li>\n<\/ul>\n\n<h4>1.5.8<\/h4>\n\n<ul>\n<li><strong>Fix: menu colors overridden by the theme<\/strong> \u2014 Some themes styled headings inside their layout wrappers (e.g. <code>.vc_row h3<\/code>) with higher CSS specificity, so the Card Grid dish titles and text did not use the selected Flavor theme colors. The plugin now enforces its own palette. Colors stay fully customizable via the theme selector.<\/li>\n<li><strong>New in Pro: Schema.org structured data (SEO)<\/strong> \u2014 Flavor Pro now outputs <code>Menu<\/code> \/ <code>MenuSection<\/code> \/ <code>MenuItem<\/code> JSON-LD (prices, nutrition) so search engines can read your menu.<\/li>\n<li><strong>New in Pro: full 40-font Typography library<\/strong> \u2014 Five more curated Google Fonts added to the Pro Typography picker (now 40 fonts total).<\/li>\n<\/ul>\n\n<h4>1.5.7<\/h4>\n\n<ul>\n<li><strong>Fix: German umlauts displayed as escape sequences<\/strong> \u2014 The 1.5.6 <code>.mo<\/code> file contained literal <code>\\xc3\\x9f<\/code> byte-escape sequences instead of UTF-8 characters, causing garbled output for umlauts (\u00e4, \u00f6, \u00fc, \u00df), special characters (\u20ac, \u2192, \u2014) in the WordPress admin. Now using proper UTF-8 encoding.<\/li>\n<\/ul>\n\n<h4>1.5.6<\/h4>\n\n<ul>\n<li><strong>German translation<\/strong> \u2014 Complete German (de_DE) translation added with correctly named <code>.po<\/code> \/ <code>.mo<\/code> files (<code>flavor-restaurant-menu-de_DE.mo<\/code>) so WordPress auto-loads them on German sites.<\/li>\n<li><strong>WordPress 7.0 compatibility<\/strong> \u2014 Tested up to WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.5.5<\/h4>\n\n<ul>\n<li><strong>Documentation links in admin<\/strong> \u2014 Category Sort page now shows a \"Documentation \u2197\" link next to the heading.<\/li>\n<li><strong>Plugin list link<\/strong> \u2014 A \"Documentation\" link is added to the plugin entry in wp-admin \u2192 Plugins.<\/li>\n<li><strong>Informational Pro pages<\/strong> \u2014 Admin menu shows informational pages for Badges, Custom Themes, Typography, Ratings, Table Stand and Import\/Export \u2014 linking to the separate Flavor Pro plugin.<\/li>\n<\/ul>\n\n<h4>1.5.4<\/h4>\n\n<ul>\n<li><strong>General improvements<\/strong> \u2014 Maintenance and minor improvements.<\/li>\n<li><strong>Security hardening<\/strong> \u2014 Nonce sanitization improved throughout. CSS output re-validates all values. Redirects use <code>wp_safe_redirect()<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"A modern restaurant menu plugin with online table reservations. Card Grid layout, category filter, dark theme, all page builders.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/301433","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=301433"}],"author":[{"embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/flavorstudio"}],"wp:attachment":[{"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=301433"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=301433"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=301433"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=301433"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=301433"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fr-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=301433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}