Title: ARDOIZA PRO : réservation de table pour restaurant
Author: mate08
Published: <strong>October 5, 2026</strong>
Last modified: October 5, 2026

---

Search plugins

![](https://ps.w.org/ardoiza-pro/assets/banner-772x250.png?rev=3728462)

![](https://ps.w.org/ardoiza-pro/assets/icon-256x256.png?rev=3728364)

# ARDOIZA PRO : réservation de table pour restaurant

 By [mate08](https://profiles.wordpress.org/mate08/)

[Download](https://downloads.wordpress.org/plugin/ardoiza-pro.1.0.7.zip)

 * [Details](https://li.wordpress.org/plugins/ardoiza-pro/#description)
 * [Reviews](https://li.wordpress.org/plugins/ardoiza-pro/#reviews)
 *  [Installation](https://li.wordpress.org/plugins/ardoiza-pro/#installation)
 * [Development](https://li.wordpress.org/plugins/ardoiza-pro/#developers)

 [Support](https://wordpress.org/support/plugin/ardoiza-pro/)

## Description

ARDOIZA gives a restaurant the three things guests ask for on its website, without
any account or subscription:

**A simple table reservation.** 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 `[ardoiza_reservation]` 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.

**An online menu with allergens.** 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`[
ardoiza_carte]` 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.

**A QR code of your menu.** 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.

**Personal data.** 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.

**What this plugin does not do.** 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.

**Privacy and independence.** 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.

### Privacy

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.

### Third-party code and licences

The QR code encoder (`includes/class-ardoiza-qr.php`) 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 `LICENSE.txt`.

## Screenshots

[⌊The table reservation form on the public site.⌉⌊The table reservation form on 
the public site.⌉[

The table reservation form on the public site.

[⌊The reservations list in the dashboard, with confirm and refuse actions.⌉⌊The 
reservations list in the dashboard, with confirm and refuse actions.⌉[

The reservations list in the dashboard, with confirm and refuse actions.

[⌊The online menu with sections, prices, allergens and vegetarian or vegan mentions.⌉⌊
The online menu with sections, prices, allergens and vegetarian or vegan mentions
.⌉[

The online menu with sections, prices, allergens and vegetarian or vegan mentions.

[⌊Editing a dish: price, availability, diet and the 14 allergens.⌉⌊Editing a dish:
price, availability, diet and the 14 allergens.⌉[

Editing a dish: price, availability, diet and the 14 allergens.

[⌊The QR code page with the PNG and SVG downloads.⌉⌊The QR code page with the PNG
and SVG downloads.⌉[

The QR code page with the PNG and SVG downloads.

[⌊The settings page: opening hours, slots, capacity, retention.⌉⌊The settings page:
opening hours, slots, capacity, retention.⌉[

The settings page: opening hours, slots, capacity, retention.

## Blocks

This plugin provides 2 blocks.

 *   ARDOIZA Menu Your dishes by section, with prices, allergens, vegetarian and
   vegan mentions.
 *   ARDOIZA Reservation A simple table reservation form: date, time, guests and
   contact details.

## Installation

 1. Install the plugin from the WordPress plugin directory (Plugins, Add New, search“
    ARDOIZA PRO”) or upload the `ardoiza-pro` folder to `/wp-content/plugins/`.
 2. Activate it.
 3. In the ARDOIZA menu, create your sections and your dishes.
 4. Create a page and add the “ARDOIZA Menu” block (or the `[ardoiza_carte]` shortcode).
 5. In ARDOIZA, Settings, select that page as the menu page, fill in your opening hours,
    slot length and capacity, then save.
 6. Add the “ARDOIZA Reservation” block (or `[ardoiza_reservation]`) to the page of
    your choice.
 7. In ARDOIZA, QR code, download the code and print it.

## FAQ

### Is an account or a subscription required?

No. Everything runs on your WordPress site. The plugin never contacts ARDOIZA servers.

### Which allergens are covered?

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.

### Can I change the colours?

Yes. The public styles use CSS custom properties (`--ardoiza-accent`, `--ardoiza-
ink`, `--ardoiza-cream`, `--ardoiza-sand`, and so on), set on `.ardoiza-menu` and`.
ardoiza-form-wrap`. 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 `body .ardoiza-
menu, body .ardoiza-form-wrap { --ardoiza-accent: #1f4e8c; }`. A value set on `:
root` does not reach them. Corner rounding follows `--ardoiza-radius` and the button
shadow follows `--ardoiza-accent`.

Since 1.0.7 each plugin rule starts with `.ardoiza-menu` or `.ardoiza-form-wrap`,
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 `body .ardoiza-menu` or `body .ardoiza-form-wrap`, for example `body .ardoiza-
menu .ardoiza-dish__price`: 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 `.ardoiza-form-wrap` instead of `.ardoiza-form`.

Text written between `<code>` tags in a dish description is shown in the font of
the menu, not in a monospace font.

### How are slots computed?

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.

### Does the reservation form work without JavaScript?

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.

### How is spam handled?

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 `ardoiza_site_requests_per_hour`).
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.

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.

### My site is behind Cloudflare or another reverse proxy. Do the limits per address still work?

By default the limits per address use the address seen by PHP (`REMOTE_ADDR`). Behind
a reverse proxy this is the address of the proxy, so all your visitors share the
same limits. The filter `ardoiza_client_ip` 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:

    ```
    add_filter( 'ardoiza_client_ip', function ( $ip ) {
        return isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ? wp_unslash( $_SERVER['HTTP_CF_CONNECTING_IP'] ) : $ip;
    } );
    ```

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 `REMOTE_ADDR`.

### Where are reservations stored, and for how long?

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.

### Does the plugin delete its data when uninstalled?

Only if you tick “Delete dishes, sections, reservations and settings when the plugin
is uninstalled” in the settings. Otherwise your data is kept.

### Can I offer takeaway ordering or a mobile app that rings for each order?

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.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“ARDOIZA PRO : réservation de table pour restaurant” is open source software. The
following people have contributed to this plugin.

Contributors

 *   [ mate08 ](https://profiles.wordpress.org/mate08/)

[Translate “ARDOIZA PRO : réservation de table pour restaurant” into your language.](https://translate.wordpress.org/projects/wp-plugins/ardoiza-pro)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/ardoiza-pro/), check
out the [SVN repository](https://plugins.svn.wordpress.org/ardoiza-pro/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/ardoiza-pro/) by
[RSS](https://plugins.trac.wordpress.org/log/ardoiza-pro/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.7

 * Fix: dish price is now aligned to the right and no longer touches the dish name
   with some themes.
 * 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.
 * Fix: when a shortcode is pasted with its code formatting, the menu and the form
   no longer switch to a monospace font.
 * Fix: a dish written in the block editor no longer gets empty paragraphs under
   its name.
 * Fix: on a right-to-left site, the reservation form no longer makes the page scroll
   sideways.
 * Reservation form: a double click no longer sends the same request twice.
 * 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.
 * Reservation form: an email address longer than 190 characters is refused as an
   invalid address.
 * 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.
 * 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.
 * Settings: the shortcodes are shown in read-only fields, so that they are copied
   as plain text.
 * 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.
 * 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.
 * 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.
 * Anti-spam: new filter `ardoiza_client_ip` for sites behind a reverse proxy (see
   the FAQ).
 * Uninstall: when the setting asks for it, the sections of the menu are now deleted
   too.

#### 1.0.6

 * 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.
 * Readme: table reservation now comes first in the description and the screenshots.

#### 1.0.5

 * 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.

#### 1.0.4

 * Published as “ARDOIZA PRO” (slug `ardoiza-pro`, text domain `ardoiza-pro`): the
   plugin folder and its main file are renamed accordingly. Nothing changes in the
   data, the shortcodes, the blocks or the CSS classes.
 * 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.

#### 1.0.3

 * Translation files are no longer bundled; translations come from translate.wordpress.
   org.
 * 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.
 * 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.
 * 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.
 * Anti-spam: at most 40 reservations recorded per hour for the whole site, whatever
   the address (filter `ardoiza_site_requests_per_hour`, 0 turns it off). Beyond
   that, guests are asked to try again a few minutes later or to call.
 * Reservation form: a note under the comment field asks guests not to enter any
   health information there. The restaurant still sees the comment.

#### 1.0.2

 * 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).
 * 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).
 * 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 `data.
   params`.
 * 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.
 * Emails: the subject of a new request uses the singular for one guest.
 * Dish editing: the price is shown with the decimal separator of the dashboard 
   language.
 * Database: table names are passed to prepared queries as identifiers.
 * 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.
 * Readme: the paid ARDOIZA offers are only pointed to, without describing their
   features.

#### 1.0.1

 * Dishes list in the dashboard: an empty price or allergen column now reads “No
   price” or “None” instead of a dash.
 * Readme: the description of the paid ARDOIZA offers is corrected, and the allergen
   list uses the exact names of Annex II.

#### 1.0.0

 * First release: menu with sections, dishes, prices, 14 EU allergens, vegetarian
   and vegan mentions, availability; “ARDOIZA Menu” block and `[ardoiza_carte]` 
   shortcode.
 * QR code of the menu page, PNG and SVG, generated locally.
 * 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.
 * Privacy: exporter, eraser, suggested policy text, retention period, optional 
   deletion on uninstall.
 * French translation included.

## Meta

 *  Version **1.0.7**
 *  Last updated **1 hour ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 8.1 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/ardoiza-pro/)
 * Tags
 * [booking](https://li.wordpress.org/plugins/tags/booking/)[menu](https://li.wordpress.org/plugins/tags/menu/)
   [qr code](https://li.wordpress.org/plugins/tags/qr-code/)[reservation](https://li.wordpress.org/plugins/tags/reservation/)
   [restaurant](https://li.wordpress.org/plugins/tags/restaurant/)
 *  [Advanced View](https://li.wordpress.org/plugins/ardoiza-pro/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/ardoiza-pro/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/ardoiza-pro/reviews/)

## Contributors

 *   [ mate08 ](https://profiles.wordpress.org/mate08/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/ardoiza-pro/)