{"id":393575,"date":"2026-10-27T11:34:32","date_gmt":"2026-10-27T11:34:32","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bayle-menu-widget\/"},"modified":"2026-10-27T11:34:19","modified_gmt":"2026-10-27T11:34:19","slug":"bayle-menu-widget","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/bayle-menu-widget\/","author":23589020,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.0","stable_tag":"0.1.0","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Bayle Menu Widget","header_author":"Bayle","header_description":"Show your live Bayle restaurant menu on your website, in your theme's style, with optional pickup ordering. No API keys in WordPress.","assets_banners_color":"798f83","last_updated":"2026-10-27 11:34:19","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/bayle.food","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":55,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"bayle","date":"2026-10-27 11:34:19","revision":3768363}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3768363,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3768363,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3768363,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3768363,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"bayle-menu-widget\/menu":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"bayle-menu-widget\/menu","version":"0.1.0","title":"Bayle Menu","category":"widgets","icon":"food","description":"Your live Bayle menu, shown in your theme's style. Guests can order for pickup when online ordering is on in Bayle.","keywords":["menu","restaurant","bayle","order","pickup"],"textdomain":"bayle-menu-widget","attributes":{"slug":{"type":"string","default":""},"lang":{"type":"string","default":""},"display":{"type":"string","enum":["","native","iframe"],"default":""},"layout":{"type":"string","enum":["list","grid"],"default":"list"},"showImages":{"type":"boolean","default":true},"showCategories":{"type":"boolean","default":true},"ordering":{"type":"boolean","default":true},"headingLevel":{"type":"number","default":2}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"bayle-menu-widget-block","style":["bayle-menu-widget","bayle-menu-widget-menu"]}},"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3768363,"resolution":"1","location":"assets","locale":"","width":1280,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3768363,"resolution":"2","location":"assets","locale":"","width":1280,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3768363,"resolution":"3","location":"assets","locale":"","width":1280,"height":900}},"screenshots":{"1":"The live Bayle menu on a restaurant page, in the theme's style.","2":"The Bayle Menu block and its settings in the block editor.","3":"Settings \u2192 Bayle Menu: restaurant slug, language, display, ordering and checkout."}},"plugin_section":[],"plugin_tags":[30524,72293,1865,16222,20710],"plugin_category":[39,43],"plugin_contributors":[288197],"plugin_business_model":[],"class_list":["post-393575","plugin","type-plugin","status-publish","hentry","plugin_tags-food-menu","plugin_tags-food-ordering","plugin_tags-menu","plugin_tags-pickup","plugin_tags-restaurant","plugin_category-business","plugin_category-customization","plugin_contributors-bayle","plugin_committers-bayle"],"banners":{"banner":"https:\/\/ps.w.org\/bayle-menu-widget\/assets\/banner-772x250.png?rev=3768363","banner_2x":"https:\/\/ps.w.org\/bayle-menu-widget\/assets\/banner-1544x500.png?rev=3768363","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bayle-menu-widget\/assets\/icon-128x128.png?rev=3768363","icon_2x":"https:\/\/ps.w.org\/bayle-menu-widget\/assets\/icon-256x256.png?rev=3768363","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bayle-menu-widget\/assets\/screenshot-1.png?rev=3768363","caption":"The live Bayle menu on a restaurant page, in the theme's style."},{"src":"https:\/\/ps.w.org\/bayle-menu-widget\/assets\/screenshot-2.png?rev=3768363","caption":"The Bayle Menu block and its settings in the block editor."},{"src":"https:\/\/ps.w.org\/bayle-menu-widget\/assets\/screenshot-3.png?rev=3768363","caption":"Settings \u2192 Bayle Menu: restaurant slug, language, display, ordering and checkout."}],"raw_content":"<!--section=description-->\n<p>Bayle Menu Widget shows a restaurant's live Bayle menu on a WordPress page. Dishes, prices, sizes, allergens and diets, photos and the weekly lunch list are managed in Bayle; the plugin shows them as part of your page, styled by your theme (fonts, colours, readable by search engines).<\/p>\n\n<p>This plugin is an interface to the Bayle menu service at <code>https:\/\/menu.bayle.food<\/code>. You need an active Bayle restaurant with the menu module turned on. Each site sets its own restaurant slug in Settings \u2192 Bayle Menu. The plugin stores only the slug, default language, display options and the menu base URL. It does not store API keys.<\/p>\n\n<ul>\n<li><strong>In your theme's style (default):<\/strong> WordPress reads Bayle's public menu feed and keeps a cached copy for 10 minutes. If Bayle cannot be reached, the last good copy is shown, so the page never breaks.<\/li>\n<li><strong>Embedded Bayle menu page:<\/strong> an iframe of the restaurant's Bayle menu page, if you prefer.<\/li>\n<li><strong>Pickup ordering (optional):<\/strong> when online ordering is on for the restaurant in Bayle, guests can add dishes (with sizes and extras) to an order and continue to Bayle's secure checkout, by default in a window on your site. Pickup time, contact details and payment are handled by Bayle; nothing is paid in WordPress. Untick \"Online ordering\" in Settings \u2192 Bayle Menu to show the menu only.<\/li>\n<\/ul>\n\n<p>Add the <strong>Bayle Menu<\/strong> block, or the shortcode <code>[bayle_menu_widget]<\/code> (also available as <code>[bayle_menu]<\/code> when no other plugin uses that shortcode).<\/p>\n\n<p>For table booking, see the separate <strong>Bayle Booking Widget<\/strong> plugin.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Bayle menu service, operated by Bayle (https:\/\/bayle.food). It is required: without it there is no menu to show.<\/p>\n\n<ul>\n<li>Service: Bayle public menu feed and menu page at <code>https:\/\/menu.bayle.food<\/code> (or another official <code>https:\/\/*.bayle.food<\/code> host set by the site admin).<\/li>\n<li>Menu feed (server side): in the default display, WordPress (your server) requests <code>https:\/\/menu.bayle.food\/api\/{slug}\/menu?lang=\u2026<\/code> when a page with the menu is viewed and no fresh cached copy exists, at most once every 10 minutes per language, and when the admin clicks \"Refresh menu now\". It sends the restaurant slug and language, and your site address in the User-Agent. Visitors' browsers do not contact Bayle for the menu text.<\/li>\n<li>Dish photos: when the restaurant added photos in Bayle, the visitor's browser loads them from the image addresses in Bayle's menu feed (https only). This sends the visitor's IP address and your site address (referrer) to that image host. Turn photos off in the block settings or with <code>images=\"0\"<\/code>.<\/li>\n<li>Embedded menu page: in iframe display, the visitor's browser loads <code>https:\/\/menu.bayle.food\/{slug}?embed=1&amp;lang=\u2026<\/code>, which sends the visitor's IP address and your site address as part of the normal page request.<\/li>\n<li>Pickup ordering (only when online ordering is on for the restaurant in Bayle and in Settings \u2192 Bayle Menu): when the guest clicks \"Continue to checkout\", their browser opens the restaurant's Bayle checkout with the chosen dish references, quantities and extras, either in a window on your site (an iframe from the menu host above) or on the restaurant's checkout page. That checkout address comes from Bayle's menu feed: a <code>https:\/\/*.bayle.food<\/code> page or the restaurant's own Bayle-hosted store (https only). Contact details (name, email, phone), pickup time and card payment are entered there, not in WordPress.<\/li>\n<li>Human verification: inside the checkout, a Cap.js proof-of-work captcha may run from Bayle's captcha service at <code>https:\/\/captcha.bayle.food<\/code>. No Google reCAPTCHA is used, and this plugin does not load the captcha script on your site.<\/li>\n<li>Payments: card payment in Bayle's checkout is processed by Stripe. This plugin does not load Stripe on your site and never sees card numbers. Stripe terms: https:\/\/stripe.com\/legal\/ssa, Stripe privacy policy: https:\/\/stripe.com\/privacy<\/li>\n<li>Why: to show the restaurant's current menu and, when ordering is on, to place pickup orders with the restaurant.<\/li>\n<li>Bayle Terms of Service: https:\/\/bayle.food\/legal\/terms\/<\/li>\n<li>Bayle Privacy Policy: https:\/\/bayle.food\/legal\/privacy\/<\/li>\n<\/ul>\n\n<p>The plugin's only server-side request is the public menu feed above. It sets no cookies and adds no tracking. The pickup order in progress is kept in the guest's browser (localStorage) until checkout or until the guest empties it.<\/p>\n\n<h3>Shortcode<\/h3>\n\n<p>Basic:<\/p>\n\n<pre><code>[bayle_menu_widget]\n<\/code><\/pre>\n\n<p>Options:<\/p>\n\n<ul>\n<li><code>slug=\"your-restaurant\"<\/code> \u2013 show another restaurant than the one in Settings.<\/li>\n<li><code>lang=\"fi|sv|en\"<\/code> \u2013 fixed language. If omitted, the Settings default, then the visitor's language (site language, Polylang or WPML).<\/li>\n<li><code>display=\"native|iframe\"<\/code> \u2013 in your theme's style, or the embedded Bayle page.<\/li>\n<li><code>layout=\"list|grid\"<\/code>, <code>images=\"0\"<\/code> (no photos), <code>categories=\"0\"<\/code> (no section links), <code>ordering=\"0\"<\/code> (menu only), <code>heading=\"2|3|4\"<\/code> (section heading level).<\/li>\n<li><code>base_url<\/code> \u2013 only an official <code>https:\/\/*.bayle.food<\/code> address; other values are ignored.<\/li>\n<\/ul>\n\n<p>Example: <code>[bayle_menu_widget slug=\"your-restaurant\" lang=\"fi\" layout=\"grid\"]<\/code><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>bayle-menu-widget<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip from Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate <strong>Bayle Menu Widget<\/strong>.<\/li>\n<li>Open <strong>Settings \u2192 Bayle Menu<\/strong>.<\/li>\n<li>Enter your restaurant slug from Bayle (the last part of your Bayle menu address). Leave the menu base URL as <code>https:\/\/menu.bayle.food<\/code> unless Bayle gave you another host.<\/li>\n<li>Insert the <strong>Bayle Menu<\/strong> block, or <code>[bayle_menu_widget]<\/code>, on a page.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20api%20keys%20in%20wordpress%3F\"><h3>Do I need API keys in WordPress?<\/h3><\/dt>\n<dd><p>No. WordPress only reads Bayle's public, key-less menu feed.<\/p><\/dd>\n<dt id=\"the%20menu%20says%20it%20is%20not%20available.\"><h3>The menu says it is not available.<\/h3><\/dt>\n<dd><p>Check the restaurant slug in Settings \u2192 Bayle Menu and that the menu module is on for your restaurant in Bayle. Admins see a hint on the page; visitors see a neutral message.<\/p><\/dd>\n<dt id=\"i%20changed%20a%20dish%20in%20bayle.%20when%20does%20my%20site%20show%20it%3F\"><h3>I changed a dish in Bayle. When does my site show it?<\/h3><\/dt>\n<dd><p>Within 10 minutes. To see it now, click \"Refresh menu now\" in Settings \u2192 Bayle Menu.<\/p><\/dd>\n<dt id=\"why%20is%20there%20no%20%22add%20to%20order%22%20button%3F\"><h3>Why is there no \"Add to order\" button?<\/h3><\/dt>\n<dd><p>Ordering shows only when online ordering is on for your restaurant in Bayle, \"Online ordering\" is ticked in Settings \u2192 Bayle Menu, and the block or shortcode allows it.<\/p><\/dd>\n<dt id=\"where%20does%20guest%20data%20go%3F\"><h3>Where does guest data go?<\/h3><\/dt>\n<dd><p>Order details, contact details and payment are entered in Bayle's checkout and go directly to Bayle (payments by Stripe). This plugin does not keep a copy in the WordPress database. A suggested privacy policy text is added under Settings \u2192 Privacy.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20with%20the%20bayle%20restaurant%20plugin%3F\"><h3>Can I use it with the Bayle Restaurant plugin?<\/h3><\/dt>\n<dd><p>Use one of them for the menu. If both are active, <code>[bayle_menu]<\/code> stays with the plugin that registered it first; <code>[bayle_menu_widget]<\/code> and the Bayle Menu block of this plugin always work.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: Bayle Menu block and <code>[bayle_menu_widget]<\/code> shortcode, menu in your theme's style or as an embedded Bayle page, 10-minute cache with last-good fallback, optional pickup ordering with Bayle's secure checkout, Settings \u2192 Bayle Menu, suggested privacy policy text, Finnish and Swedish translations.<\/li>\n<\/ul>","raw_excerpt":"Show your live Bayle restaurant menu on your website, in your theme's style, with optional pickup ordering. No API keys in WordPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/393575","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=393575"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bayle"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=393575"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=393575"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=393575"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=393575"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=393575"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=393575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}