AumReserva

Description

AumReserva turns a WordPress site into a booking system for anything that is booked as “a person, at a time”: lessons, treatments, consultations, viewings, repairs.

You describe what you offer as services, who delivers them as staff, and where as locations. Visitors pick a service, a member of staff, a day and a free slot, and leave their details. The booking lands in a table in the admin, and everyone who needs to know gets an email.

What you can set up:

  • Services with their own duration, price, buffer time and assigned staff
  • Staff with their own working hours and days off, overriding the site-wide schedule
  • Locations, so the same service can be offered in several places
  • Site-wide opening hours, an optional break, and slot length
  • How far ahead a booking must be made, and how far ahead it may be made
  • How many bookings one slot accepts
  • Whether guests can book, or an account is required
  • Whether bookings confirm themselves or wait for you
  • Whether customers may cancel, and until how long before the appointment
  • Reminder emails, a chosen number of hours before the appointment
  • What the three things are called on your site — “Service”, “Staff” and “Location” are only the defaults

Three shortcodes place it on the front end:

  • [aumreserva_services] — the list of what you offer, each with its own booking button
  • [aumreserva_booking_button] — a single booking button, for a page you built yourself
  • [aumreserva_my_bookings] — a logged-in visitor’s own bookings, with cancelling

WooCommerce is optional. With it active, a booking can require a deposit and AumReserva creates the order for it. Without it, everything else works unchanged and no payment is asked for.

Email templates can be overridden from your theme, in an aumreserva/emails/ folder.

More from AumCreate

How availability is worked out from your services, practitioners and opening hours: aumcreate.com/plugins/aumreserva

Also free from AumCreate: llms.txt and schema for AI search, AI crawler control, AI translation for WordPress, digital-goods checkout for WooCommerce, and a hosted chat widget: aumcreate.com/plugins

Screenshots

Installation

  1. Upload the aumreserva folder to /wp-content/plugins/, or install the zip from Plugins > Add New
  2. Activate the plugin through the Plugins screen
  3. Visit Settings > Permalinks and save, so the service and staff URLs work
  4. Open AumReserva > Settings and set your opening hours, slot length and currency
  5. Add your first service under AumReserva > Services, and your staff under AumReserva > Staff
  6. Put [aumreserva_services] on a page

FAQ

Does it need WooCommerce?

No. WooCommerce is only used when you ask for a deposit on a booking — then AumReserva creates the order for that deposit. Everything else works without it.

Can one member of staff work different hours from the rest?

Yes. Each staff member can carry their own weekly hours and days off, which replace the site-wide schedule for them.

Where do bookings go?

Into their own database table, and onto the AumReserva > Bookings screen. They are not posts, so they never appear in your content lists or feeds.

Are reminder emails sent even if nobody visits the site?

They are sent by WordPress’s scheduled tasks, which run on site traffic. On a quiet site you may want a real system cron calling wp-cron.php.

What happens to my bookings if I delete the plugin?

Deleting it drops the bookings table, the plugin’s options, its staff role and its user meta. Deactivating it leaves everything in place.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“AumReserva” is open source software. The following people have contributed to this plugin.

Contributors

Translate “AumReserva” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

The full history, including older releases, is in changelog.txt inside the plugin folder.

1.6.4

  • Fixed: a staff member’s page listed none of the services assigned to them. The list came from
    a meta query asking for rows LIKE "12", which is how the string “12” is serialized, while
    the plugin stores the assignment as an array of integers — so the query matched nothing on any
    site. The membership test now runs in PHP against the unserialized value.
  • Fixed: six union return types (int|false). That is PHP 8.0 syntax, and this plugin supports
    PHP 7.4, where it is a parse error, so on 7.4 those files never compiled and the plugin could
    not activate. The declarations are removed and the return types are documented with @return
    tags instead. The same family was addressed in 1.6.3 for match expressions; the check that
    found those cases listed individual constructs rather than the whole feature set, so these were
    not reported. That check now runs PHPCompatibility against the version in the plugin header.
  • Changed: the meta-field stylesheet and the two admin scripts are no longer printed inline.
    They are enqueued from admin/css/aumreserva-meta-fields.css, admin/js/aumreserva-meta-fields.js
    and admin/js/aumreserva-settings.js, on the screens that use them only. The nonces and
    translated strings they need arrive through wp_localize_script().
  • Changed: the three JavaScript configuration objects are renamed aumreservaAdmin,
    aumreservaCalendar and aumreservaConfig. The previous names began with a three-character
    segment; wordpress.org asks for at least four.
  • Changed: the REST namespace is aumreserva/v1, for the same reason. Routes that were under
    /wp-json/arb/v1/ are now under /wp-json/aumreserva/v1/.
  • Changed: fputcsv() in the booking export is called with an explicit $escape argument. The
    default changes in PHP 8.4, and an empty string is the RFC 4180 behaviour.
  • Changed: the three front-end templates and uninstall.php prefix every variable they define.
    WordPress includes a template returned through template_include at global scope, so each of
    those assignments was a global — forty-four of them. Four more overwrote variables WordPress
    itself uses: $term, $cat and $status. Plugin Check reports the unprefixed names; it does
    not run WordPress.WP.GlobalVariablesOverride, so the four overwrites were found by running
    that sniff over the plugin directly.

1.6.3

  • Fixed: two match expressions. That is PHP 8.0 syntax, and this plugin supports PHP 7.4, where
    it is a parse error — one of the two sits in the staff meta-box save path and the other in the
    settings screen, so on 7.4 the file never compiled and the plugin could not load. Replaced with
    equivalent strict comparisons.
  • Changed: removed a three-letter accessor function from the global namespace. WordPress.org asks
    that anything declared globally carry the plugin prefix, with at least four characters in its
    first segment. Nothing called it but the bootstrap line below its own declaration, so it is
    gone rather than renamed. Code that needs the instance calls AumReserva_Plugin::instance().
  • Changed: the source comments are now in one language throughout, and the note about re-skinning
    the booking UI describes the mechanism — --arb-* custom properties with fallbacks, which any
    later stylesheet can set — without implying anything else has to be installed.
  • Changed: the four reads of staff-link form fields carry a per-line sniff exemption naming the
    caller that verifies their nonce. The verification was always there; a per-file linter cannot
    see across the call.

1.6.2

  • Added: a “Manual” link on the Plugins screen, pointing at the manual in the administrator’s own
    language (English, Simplified Chinese, Traditional Chinese, Japanese). Until now this plugin
    shipped only inside a template kit, where the manual arrived through that channel; installed
    from the directory there was nothing in the admin saying where to find it.
  • Changed: the changelog in this file now carries only recent releases. wordpress.org truncates
    that section at 5000 bytes without saying so. All of it is kept in changelog.txt.

1.6.1

  • The admin page slugs, script and style handles and the WooCommerce account endpoint still used
    the three-character arb- form, which 1.6.0 changed only for the underscore spellings. They are
    now aumreserva-:

    admin pages page=arb-booking -> page=aumreserva-booking
    page=arb-bookings-list -> page=aumreserva-bookings-list
    page=arb-settings -> page=aumreserva-settings
    page=arb-my-bookings -> page=aumreserva-my-bookings
    handles arb-admin arb-calendar arb-public -> aumreserva-…
    account tab /my-account/arb-bookings/ -> /my-account/aumreserva-bookings/

    A bookmarked admin URL or a link to the account tab needs the new address. CSS class names are
    unchanged apart from two that doubled as a handle or a page slug (arb-calendar and
    arb-my-bookings); their stylesheet, markup and script moved together.