{"id":378159,"date":"2026-10-05T08:10:48","date_gmt":"2026-10-05T08:10:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ardoiza-pro\/"},"modified":"2026-10-05T18:09:52","modified_gmt":"2026-10-05T18:09:52","slug":"ardoiza-pro","status":"publish","type":"plugin","link":"https:\/\/li.wordpress.org\/plugins\/ardoiza-pro\/","author":14349755,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.7","stable_tag":"1.0.7","tested":"7.1.2","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"ARDOIZA PRO","header_author":"ARDOIZA","header_description":"Online menu with the 14 EU allergens, QR code of the menu page and a simple table reservation form for restaurants. No account, no external service.","assets_banners_color":"f6efe5","last_updated":"2026-10-05 18:09:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/ardoiza.fr\/","header_author_uri":"https:\/\/ardoiza.fr","rating":0,"author_block_rating":0,"active_installs":0,"downloads":52,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"mate08","date":"2026-10-05 08:10:22","revision":3728364},"1.0.6":{"tag":"1.0.6","author":"mate08","date":"2026-10-05 09:01:45","revision":3728462},"1.0.7":{"tag":"1.0.7","author":"mate08","date":"2026-10-05 18:09:52","revision":3729425}},"upgrade_notice":{"1.0.7":"<p>Reservation requests from logged-in users are saved again; dish prices and fonts display correctly with more themes; new layout of the reservation form. No change to your data. If you added your own CSS for this plugin, see the FAQ.<\/p>","1.0.6":"<p>Fixes the layout of the Reservations, QR code and Settings screens in the dashboard. No change to your data.<\/p>","1.0.5":"<p>Optional seating preference (indoors or terrace) on the reservation form. Existing reservations are kept, with no preference.<\/p>","1.0.4":"<p>Published as ARDOIZA PRO: the plugin folder is now ardoiza-pro. The settings page links to the ARDOIZA space.<\/p>","1.0.3":"<p>Translation files are no longer bundled; translations come from translate.wordpress.org. Stronger anti-spam on the reservation form.<\/p>","1.0.2":"<p>Reservation form keeps the chosen time, shows errors next to each field and gets stronger anti-spam limits; dates follow the time zone of the site.<\/p>","1.0.1":"<p>Clearer empty columns in the dishes list and an up to date readme.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3728364,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3728364,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3728462,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3728462,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"ardoiza\/menu":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"ardoiza\/menu","version":"1.0.7","title":"ARDOIZA Menu","category":"widgets","icon":"food","description":"Your dishes by section, with prices, allergens, vegetarian and vegan mentions.","keywords":["menu","restaurant","allergens","carte"],"textdomain":"ardoiza-pro","attributes":{"section":{"type":"string","default":""},"unavailable":{"type":"string","default":"hide"},"legend":{"type":"boolean","default":true},"images":{"type":"boolean","default":true},"heading":{"type":"number","default":2}},"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true}},"editorScript":"file:.\/index.js","style":"ardoiza-public"},"ardoiza\/reservation":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"ardoiza\/reservation","version":"1.0.7","title":"ARDOIZA Reservation","category":"widgets","icon":"calendar-alt","description":"A simple table reservation form: date, time, guests and contact details.","keywords":["reservation","booking","restaurant","table"],"textdomain":"ardoiza-pro","attributes":{"title":{"type":"string","default":""}},"supports":{"html":false,"align":["wide"],"spacing":{"margin":true,"padding":true}},"editorScript":"file:.\/index.js","style":"ardoiza-public"}},"tagged_versions":["1.0.5","1.0.6","1.0.7"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3729425,"resolution":"1","location":"assets","locale":"","width":1468,"height":1125},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3728462,"resolution":"2","location":"assets","locale":"","width":1920,"height":857},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3729425,"resolution":"3","location":"assets","locale":"","width":1468,"height":1776},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3728462,"resolution":"4","location":"assets","locale":"","width":1920,"height":722},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3728462,"resolution":"5","location":"assets","locale":"","width":1280,"height":653},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3728462,"resolution":"6","location":"assets","locale":"","width":1440,"height":1147}},"screenshots":{"1":"The table reservation form on the public site.","2":"The reservations list in the dashboard, with confirm and refuse actions.","3":"The online menu with sections, prices, allergens and vegetarian or vegan mentions.","4":"Editing a dish: price, availability, diet and the 14 allergens.","5":"The QR code page with the PNG and SVG downloads.","6":"The settings page: opening hours, slots, capacity, retention."}},"plugin_section":[],"plugin_tags":[269,1865,1373,722,20710],"plugin_category":[39,43],"plugin_contributors":[284424],"plugin_business_model":[],"class_list":["post-378159","plugin","type-plugin","status-publish","hentry","plugin_tags-booking","plugin_tags-menu","plugin_tags-qr-code","plugin_tags-reservation","plugin_tags-restaurant","plugin_category-business","plugin_category-customization","plugin_contributors-mate08","plugin_committers-mate08"],"banners":{"banner":"https:\/\/ps.w.org\/ardoiza-pro\/assets\/banner-772x250.png?rev=3728462","banner_2x":"https:\/\/ps.w.org\/ardoiza-pro\/assets\/banner-1544x500.png?rev=3728462","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ardoiza-pro\/assets\/icon-128x128.png?rev=3728364","icon_2x":"https:\/\/ps.w.org\/ardoiza-pro\/assets\/icon-256x256.png?rev=3728364","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ardoiza-pro\/assets\/screenshot-1.png?rev=3729425","caption":"The table reservation form on the public site."},{"src":"https:\/\/ps.w.org\/ardoiza-pro\/assets\/screenshot-2.png?rev=3728462","caption":"The reservations list in the dashboard, with confirm and refuse actions."},{"src":"https:\/\/ps.w.org\/ardoiza-pro\/assets\/screenshot-3.png?rev=3729425","caption":"The online menu with sections, prices, allergens and vegetarian or vegan mentions."},{"src":"https:\/\/ps.w.org\/ardoiza-pro\/assets\/screenshot-4.png?rev=3728462","caption":"Editing a dish: price, availability, diet and the 14 allergens."},{"src":"https:\/\/ps.w.org\/ardoiza-pro\/assets\/screenshot-5.png?rev=3728462","caption":"The QR code page with the PNG and SVG downloads."},{"src":"https:\/\/ps.w.org\/ardoiza-pro\/assets\/screenshot-6.png?rev=3728462","caption":"The settings page: opening hours, slots, capacity, retention."}],"raw_content":"<!--section=description-->\n<p>ARDOIZA gives a restaurant the three things guests ask for on its website, without any account or subscription:<\/p>\n\n<p><strong>A simple table reservation.<\/strong> Set your opening hours for each day, the slot length, the number of guests per slot and how far ahead guests may book. The \"ARDOIZA Reservation\" block or the <code>[ardoiza_reservation]<\/code> shortcode shows a form (date, time, guests, seating preference when your venue has a terrace, name, phone, email, comment, consent box). Slots that are full or in the past are not offered. The restaurant receives the request by email, the guest receives an acknowledgement, and you confirm or refuse each request from the dashboard; the guest is notified by email. Requests can also be confirmed automatically when the slot has room.<\/p>\n\n<p><strong>An online menu with allergens.<\/strong> Create your sections (starters, mains, desserts) and your dishes with a name, a description, a photo, a price in euros, the 14 allergens of Regulation (EU) No 1169\/2011 (cereals containing gluten, crustaceans, eggs, fish, peanuts, soybeans, milk, nuts, celery, mustard, sesame seeds, sulphur dioxide and sulphites, lupin, molluscs), and the vegetarian and vegan mentions. Mark a dish as unavailable in one click. Display the menu with the \"ARDOIZA Menu\" block or the <code>[ardoiza_carte]<\/code> shortcode. The layout is sober, readable on a phone, accessible (headings, lists, visible focus) and every colour is a CSS custom property your theme can override.<\/p>\n\n<p><strong>A QR code of your menu.<\/strong> From the dashboard, download the QR code that opens your menu page, as PNG (for printers) or SVG (for designers). The code is generated on your own site by a small encoder included in the plugin: nothing is sent to any third-party service.<\/p>\n\n<p><strong>Personal data.<\/strong> Reservations are the only personal data handled. They are stored in your own database, never shared, and exported or erased with the WordPress privacy tools (Tools, Export Personal Data \/ Erase Personal Data). A retention period deletes old reservations automatically, and a suggested paragraph is added to the privacy policy guide. Light anti-spam protection is built in (security token, hidden trap field, minimum fill time, limits per address and per guest); no CAPTCHA and no external service.<\/p>\n\n<p><strong>What this plugin does not do.<\/strong> No online payment, no takeaway ordering, no deposit, no automatic reminders, no multi-restaurant management, no mobile notification. The paid ARDOIZA offers, described at https:\/\/ardoiza.fr\/, are separate products: this free plugin works fully on its own, does not require them, does not connect to them and does not show any advertising for them beyond one sentence and one link on its settings page.<\/p>\n\n<p><strong>Privacy and independence.<\/strong> The plugin makes no request to any external server: no licence check, no telemetry, no update from outside WordPress.org, no font or script loaded from a third party. Emails are sent with the standard WordPress mail function.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin stores reservation requests (date, time, party size, seating preference, name, phone, email, comment, consent time) in your database. It sends them by email to the restaurant address set in the settings and an acknowledgement to the guest. It registers a personal data exporter and eraser with the WordPress privacy tools, adds suggested text to the privacy policy guide and applies a configurable retention period. Anti-abuse counters keep only salted hashes of the visitor address, email and phone, for one hour to one day. It does not set cookies, does not use third-party services and does not send any data outside your site.<\/p>\n\n<h3>Third-party code and licences<\/h3>\n\n<p>The QR code encoder (<code>includes\/class-ardoiza-qr.php<\/code>) was written for this plugin and is released under the GPLv2 or later, like the rest of the plugin. No other third-party library is bundled. The plugin uses the WordPress block editor packages provided by WordPress itself. The full text of the GPLv2 is in <code>LICENSE.txt<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin from the WordPress plugin directory (Plugins, Add New, search \"ARDOIZA PRO\") or upload the <code>ardoiza-pro<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate it.<\/li>\n<li>In the ARDOIZA menu, create your sections and your dishes.<\/li>\n<li>Create a page and add the \"ARDOIZA Menu\" block (or the <code>[ardoiza_carte]<\/code> shortcode).<\/li>\n<li>In ARDOIZA, Settings, select that page as the menu page, fill in your opening hours, slot length and capacity, then save.<\/li>\n<li>Add the \"ARDOIZA Reservation\" block (or <code>[ardoiza_reservation]<\/code>) to the page of your choice.<\/li>\n<li>In ARDOIZA, QR code, download the code and print it.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20an%20account%20or%20a%20subscription%20required%3F\"><h3>Is an account or a subscription required?<\/h3><\/dt>\n<dd><p>No. Everything runs on your WordPress site. The plugin never contacts ARDOIZA servers.<\/p><\/dd>\n<dt id=\"which%20allergens%20are%20covered%3F\"><h3>Which allergens are covered?<\/h3><\/dt>\n<dd><p>The 14 substances or products causing allergies or intolerances listed in Annex II of Regulation (EU) No 1169\/2011, which apply to non-prepacked food in the European Union. You remain responsible for the accuracy of the information shown to your guests.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20colours%3F\"><h3>Can I change the colours?<\/h3><\/dt>\n<dd><p>Yes. The public styles use CSS custom properties (<code>--ardoiza-accent<\/code>, <code>--ardoiza-ink<\/code>, <code>--ardoiza-cream<\/code>, <code>--ardoiza-sand<\/code>, and so on), set on <code>.ardoiza-menu<\/code> and <code>.ardoiza-form-wrap<\/code>. Redefine them in your theme or in the Customizer's additional CSS with one more selector, because the plugin styles may be loaded after yours (in the footer of the page when you use a shortcode), for example <code>body .ardoiza-menu, body .ardoiza-form-wrap { --ardoiza-accent: #1f4e8c; }<\/code>. A value set on <code>:root<\/code> does not reach them. Corner rounding follows <code>--ardoiza-radius<\/code> and the button shadow follows <code>--ardoiza-accent<\/code>.<\/p>\n\n<p>Since 1.0.7 each plugin rule starts with <code>.ardoiza-menu<\/code> or <code>.ardoiza-form-wrap<\/code>, so that fewer theme rules reach into the menu and the form (a theme rule that is more specific can still change them). If your own CSS targets a plugin class, prefix it with <code>body .ardoiza-menu<\/code> or <code>body .ardoiza-form-wrap<\/code>, for example <code>body .ardoiza-menu .ardoiza-dish__price<\/code>: the plugin styles may be loaded after yours, so your rule needs one more selector to win. The frame of the reservation form is now drawn by <code>.ardoiza-form-wrap<\/code> instead of <code>.ardoiza-form<\/code>.<\/p>\n\n<p>Text written between <code>&lt;code&gt;<\/code> tags in a dish description is shown in the font of the menu, not in a monospace font.<\/p><\/dd>\n<dt id=\"how%20are%20slots%20computed%3F\"><h3>How are slots computed?<\/h3><\/dt>\n<dd><p>For each day the opening hours are cut into slots of the chosen length; the last slot starts before closing time. A slot is offered when the sum of guests of pending and confirmed reservations plus the requested party fits within the capacity per slot. Past slots and dates beyond the booking horizon are excluded.<\/p><\/dd>\n<dt id=\"does%20the%20reservation%20form%20work%20without%20javascript%3F\"><h3>Does the reservation form work without JavaScript?<\/h3><\/dt>\n<dd><p>Yes. The form posts to the server, which validates the slot again. When JavaScript is available, the list of times is refined as soon as a date and a party size are chosen; a time already chosen stays selected if it is still free, otherwise a message next to the field asks for another one.<\/p><\/dd>\n<dt id=\"how%20is%20spam%20handled%3F\"><h3>How is spam handled?<\/h3><\/dt>\n<dd><p>Several checks: a security token tied to the form, a hidden trap field, a minimum fill time measured from a timestamp signed by your site for the visitor's address, a limit of five attempts per hour and per address, a limit of three reservations per hour and ten per day for the same email address or phone number, and a limit of 40 reservations per hour for the whole site (filter <code>ardoiza_site_requests_per_hour<\/code>). Every attempt counts towards the limit per address, including the ones that fail; a request without a valid address is refused. The list of free times can be looked up 30 times per ten minutes from one address. Addresses, emails and phone numbers are only hashed, with the secret salt of your site, for these short-lived counters and are never stored with the reservation. This stops most bots without CAPTCHA or external service.<\/p>\n\n<p>If your pages are served from a cache, the token and the timestamp are refreshed by the plugin's own script when the visitor picks a date; the page holding the form also asks shared caches not to keep it. Should a visitor still send an out of date page, the form says so and asks them to reload.<\/p><\/dd>\n<dt id=\"my%20site%20is%20behind%20cloudflare%20or%20another%20reverse%20proxy.%20do%20the%20limits%20per%20address%20still%20work%3F\"><h3>My site is behind Cloudflare or another reverse proxy. Do the limits per address still work?<\/h3><\/dt>\n<dd><p>By default the limits per address use the address seen by PHP (<code>REMOTE_ADDR<\/code>). Behind a reverse proxy this is the address of the proxy, so all your visitors share the same limits. The filter <code>ardoiza_client_ip<\/code> lets you give the real address of the visitor. For example, for a site that really is behind Cloudflare, in a small plugin of your own or in the functions.php file of your theme:<\/p>\n\n<pre><code>add_filter( 'ardoiza_client_ip', function ( $ip ) {\n    return isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ? wp_unslash( $_SERVER['HTTP_CF_CONNECTING_IP'] ) : $ip;\n} );\n<\/code><\/pre>\n\n<p>Only trust such a header if your site is really behind that proxy and cannot be reached directly: otherwise anyone can send the header with an address of their choice and escape the limits. A value that is not a valid IP address is ignored and the plugin falls back to <code>REMOTE_ADDR<\/code>.<\/p><\/dd>\n<dt id=\"where%20are%20reservations%20stored%2C%20and%20for%20how%20long%3F\"><h3>Where are reservations stored, and for how long?<\/h3><\/dt>\n<dd><p>In a dedicated table of your WordPress database. The retention period (365 days by default, 0 to keep forever) deletes older reservations once a day. Guests can also ask you to export or erase their data through the WordPress privacy tools.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20delete%20its%20data%20when%20uninstalled%3F\"><h3>Does the plugin delete its data when uninstalled?<\/h3><\/dt>\n<dd><p>Only if you tick \"Delete dishes, sections, reservations and settings when the plugin is uninstalled\" in the settings. Otherwise your data is kept.<\/p><\/dd>\n<dt id=\"can%20i%20offer%20takeaway%20ordering%20or%20a%20mobile%20app%20that%20rings%20for%20each%20order%3F\"><h3>Can I offer takeaway ordering or a mobile app that rings for each order?<\/h3><\/dt>\n<dd><p>Not with this plugin. The paid ARDOIZA offers are described at https:\/\/ardoiza.fr\/. They are separate products and are not needed to use this plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fix: dish price is now aligned to the right and no longer touches the dish name with some themes.<\/li>\n<li>Fix: a reservation request sent by a logged-in user (for example the site owner trying the form) was refused as \"page out of date\" and never saved. It is saved again.<\/li>\n<li>Fix: when a shortcode is pasted with its code formatting, the menu and the form no longer switch to a monospace font.<\/li>\n<li>Fix: a dish written in the block editor no longer gets empty paragraphs under its name.<\/li>\n<li>Fix: on a right-to-left site, the reservation form no longer makes the page scroll sideways.<\/li>\n<li>Reservation form: a double click no longer sends the same request twice.<\/li>\n<li>Emails to the guest no longer repeat anything typed in the form (name, phone, email address, comment): they start with \"Hello,\" and give the date, the time, the number of guests and the seating preference. The restaurant still receives everything.<\/li>\n<li>Reservation form: an email address longer than 190 characters is refused as an invalid address.<\/li>\n<li>Reservation form: new layout, a card with the title inside, larger fields and the consent box in a frame. Fonts and colours still come from your theme and from the CSS custom properties.<\/li>\n<li>Dashboard: a notice tells you when a reservation request could not be saved in the database, or when WordPress could not send you the email announcing a saved request.<\/li>\n<li>Settings: the shortcodes are shown in read-only fields, so that they are copied as plain text.<\/li>\n<li>Styles: every plugin rule now starts with .ardoiza-menu or .ardoiza-form-wrap. If your own CSS targets a plugin class, prefix it with body .ardoiza-menu or body .ardoiza-form-wrap.<\/li>\n<li>Menu: text sizes are in em, so they follow the text size of your site and a dish name is never smaller than its description.<\/li>\n<li>Reservations: on an old database whose table cannot store emoji (3-byte utf8), emoji typed in the form are removed instead of the request being refused.<\/li>\n<li>Anti-spam: new filter <code>ardoiza_client_ip<\/code> for sites behind a reverse proxy (see the FAQ).<\/li>\n<li>Uninstall: when the setting asks for it, the sections of the menu are now deleted too.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Dashboard: the Reservations, QR code and Settings screens are styled again (status badges, framed QR code, compact opening hours table); the price field of a dish is wider.<\/li>\n<li>Readme: table reservation now comes first in the description and the screenshots.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Reservations: new setting \"My venue has a terrace\". When it is checked, the form offers a seating preference (no preference, indoors or terrace), shown as a wish in the reservations list, the emails and the personal data export.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Published as \"ARDOIZA PRO\" (slug <code>ardoiza-pro<\/code>, text domain <code>ardoiza-pro<\/code>): the plugin folder and its main file are renamed accordingly. Nothing changes in the data, the shortcodes, the blocks or the CSS classes.<\/li>\n<li>Settings page: one link to the ARDOIZA space, where the paid modules (full reservation management, takeaway ordering, mobile app) are subscribed and downloaded, then installed as separate plugins.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Translation files are no longer bundled; translations come from translate.wordpress.org.<\/li>\n<li>Anti-spam: the hidden timestamp of the reservation form is signed by the site (HMAC-SHA-256 with a secret of the site), so a script can no longer send an old timestamp of its own to skip the minimal delay. A page displayed before the update asks to be reloaded.<\/li>\n<li>Anti-spam: the limits per address count an IPv6 address by its \/64 prefix, so changing address inside the same \/64 no longer resets them.<\/li>\n<li>Anti-spam: the signed timestamp only holds from the address (IPv6: the \/64) that loaded the page, so a page read once can no longer be posted from many addresses. A page served by a cache still works: the form script takes a fresh timestamp from the availability route, and the page and that route ask shared caches not to keep them.<\/li>\n<li>Anti-spam: at most 40 reservations recorded per hour for the whole site, whatever the address (filter <code>ardoiza_site_requests_per_hour<\/code>, 0 turns it off). Beyond that, guests are asked to try again a few minutes later or to call.<\/li>\n<li>Reservation form: a note under the comment field asks guests not to enter any health information there. The restaurant still sees the comment.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Reservation form: changing the date or the number of guests reloads the list of times without silently dropping the time already chosen. If it is still free it stays selected; otherwise the field is emptied and a message next to it asks for another time. A late answer is ignored, and if the lookup fails the full list comes back (the server checks the slot anyway).<\/li>\n<li>Reservation form: after a refused request, the message is also shown next to the field in cause, which is marked as invalid for screen readers (aria-invalid, aria-describedby).<\/li>\n<li>Anti-spam: limit of three reservations per hour and ten per day for the same email address or phone number; a request without a valid visitor address is refused instead of escaping the limit; the availability lookup is limited to 30 calls per ten minutes and per address. Its errors name the field in cause in <code>data.params<\/code>.<\/li>\n<li>Dates: validation, today, booking horizon, day of the week and retention are computed with DateTimeImmutable in the time zone of the site. Dates in emails and in the dashboard no longer shift by one day in time zones far from UTC.<\/li>\n<li>Emails: the subject of a new request uses the singular for one guest.<\/li>\n<li>Dish editing: the price is shown with the decimal separator of the dashboard language.<\/li>\n<li>Database: table names are passed to prepared queries as identifiers.<\/li>\n<li>Translations: WordPress loads them itself (language packs from translate.wordpress.org); the French catalog shipped in the plugin, now also covering the block editor labels, is only used when no language pack is installed.<\/li>\n<li>Readme: the paid ARDOIZA offers are only pointed to, without describing their features.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Dishes list in the dashboard: an empty price or allergen column now reads \"No price\" or \"None\" instead of a dash.<\/li>\n<li>Readme: the description of the paid ARDOIZA offers is corrected, and the allergen list uses the exact names of Annex II.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: menu with sections, dishes, prices, 14 EU allergens, vegetarian and vegan mentions, availability; \"ARDOIZA Menu\" block and <code>[ardoiza_carte]<\/code> shortcode.<\/li>\n<li>QR code of the menu page, PNG and SVG, generated locally.<\/li>\n<li>Simple table reservation: opening hours, slot length, capacity, booking horizon, public form, emails to the restaurant and the guest, confirmation and refusal from the dashboard, automatic confirmation option.<\/li>\n<li>Privacy: exporter, eraser, suggested policy text, retention period, optional deletion on uninstall.<\/li>\n<li>French translation included.<\/li>\n<\/ul>","raw_excerpt":"Simple table reservation for restaurants, with an online menu, its allergens and a QR code of the menu page. No account, no external service.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/378159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=378159"}],"author":[{"embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mate08"}],"wp:attachment":[{"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=378159"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=378159"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=378159"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=378159"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=378159"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=378159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}