{"id":350169,"date":"2026-08-28T01:42:18","date_gmt":"2026-08-28T01:42:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/steadybook-lite\/"},"modified":"2026-08-28T01:42:04","modified_gmt":"2026-08-28T01:42:04","slug":"steadydevs-venue-booking","status":"publish","type":"plugin","link":"https:\/\/ky.wordpress.org\/plugins\/steadydevs-venue-booking\/","author":23543997,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.11.3","stable_tag":"1.11.3","tested":"7.1","requires":"5.0","requires_php":"7.2","requires_plugins":null,"header_name":"SteadyDevs Venue Booking","header_author":"Steady Devs Solutions","header_description":"Take bookings for anything you rent by time \u2014 live availability, a clean multi-step booking flow, and an admin approval workflow with double-booking protection. Works for bays, courts, rooms, tables, equipment and more.","assets_banners_color":"162659","last_updated":"2026-08-28 01:42:04","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/steadydevs.com\/venue-booking","header_author_uri":"https:\/\/steadydevs.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":43,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.11.3":{"tag":"1.11.3","author":"seanliew","date":"2026-08-28 01:42:04","revision":3669691}},"upgrade_notice":{"1.10.1":"<p>Adds online payments for credit packages (HitPay), a setup screen that reports where your Class Portal actually stands, one-click creation of the member pages, and multi-day timetable entry \u2014 all Pro. Existing bookings, credits and settings are preserved, and payment methods you settle yourself behave exactly as before.<\/p>","1.9.0":"<p>First release on WordPress.org, and the split into a free edition and SteadyBook Pro. Existing bookings, resources and settings are preserved in both. Pro sites keep their folder and update as before.<\/p>","1.2.10":"<p>Adds configurable time slots (with a business-hours generator and half\/quarter-hour start times), a configurable maximum booking duration, and fixes multi-hour bookings so they block every hour they occupy. Existing bookings and settings are preserved.<\/p>","1.2.9":"<p>Fixes peak pricing so peak-day bookings are actually charged the peak rate (form total and recorded booking), adds an in-dashboard User Guide page, and adds Sender Email\/Name settings for customer emails. Existing bookings and settings are preserved.<\/p>","1.2.7":"<p>Adds configurable form-panel padding, step-heading text\/size, and a \u201cSelected highlight\u201d colour; fixes time-slot contrast on dark themes. Existing bookings and settings are preserved.<\/p>","1.2.6":"<p>Adds a live 3-step preview on the Appearance page and a WhatsApp button in emails. Existing bookings and settings are preserved.<\/p>","1.2.5":"<p>Adds editable HTML email templates with live preview, submission notification emails, a Quick Setup page, and booking-form styling refinements. Existing bookings and settings are preserved.<\/p>","1.2.4":"<p>Adds a configurable form panel (remove the card background\/shadow to blend into the page) and applies the button color to all primary buttons. Existing bookings and settings are preserved.<\/p>","1.2.3":"<p>Adds configurable resource terminology (Bay \u2192 Slot\/Class\/Court\u2026) across the form and admin. The admin \u201cBays\u201d screen now reads \u201cSlots\u201d by default; change it under Appearance \u2192 Wording. Existing bookings and settings are preserved.<\/p>","1.2.2":"<p>Adds peak\/non-peak bay pricing, a compact paginated date picker, and configurable confirm button and summary note. Adds a bay database column automatically on update. Existing bookings and settings are preserved.<\/p>","1.2.1":"<p>Adds editable wording, more appearance controls (summary colors, transparency, border) and earlier availability feedback. Safe upgrade \u2014 existing bookings and settings are preserved.<\/p>","1.2.0":"<p>Adds a no-code Appearance panel to restyle the booking form. Safe upgrade \u2014 existing bookings and settings are preserved.<\/p>","1.1.0":"<p>Adds the booking approval workflow and customer emails. A new customer email field is added to the booking form and database automatically.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3669691,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3669691,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3669691,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3669691,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.11.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3669691,"resolution":"1","location":"assets","locale":"","width":2601,"height":1480},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3669691,"resolution":"2","location":"assets","locale":"","width":2452,"height":1503},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3669691,"resolution":"3","location":"assets","locale":"","width":1759,"height":552},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3669691,"resolution":"4","location":"assets","locale":"","width":1944,"height":916},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3669691,"resolution":"5","location":"assets","locale":"","width":1888,"height":1170},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3669691,"resolution":"6","location":"assets","locale":"","width":1738,"height":1105}},"screenshots":{"1":"The 3-step booking form with live availability.","2":"Resource selection with group size and duration.","3":"Admin \u2014 All Bookings with Approve \/ Reject \/ Cancel.","4":"Appearance settings with live preview and colour presets.","5":"The email designer, with a live preview of every message the plugin sends.","6":"Quick Setup \u2014 opening hours, pricing and contact details in one page."}},"plugin_section":[],"plugin_tags":[8132,269,416,1475,268],"plugin_category":[40],"plugin_contributors":[277983],"plugin_business_model":[],"class_list":["post-350169","plugin","type-plugin","status-publish","hentry","plugin_tags-appointments","plugin_tags-booking","plugin_tags-calendar","plugin_tags-reservations","plugin_tags-scheduling","plugin_category-calendar-and-events","plugin_contributors-seanliew","plugin_committers-seanliew"],"banners":{"banner":"https:\/\/ps.w.org\/steadydevs-venue-booking\/assets\/banner-772x250.png?rev=3669691","banner_2x":"https:\/\/ps.w.org\/steadydevs-venue-booking\/assets\/banner-1544x500.png?rev=3669691","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/steadydevs-venue-booking\/assets\/icon-128x128.png?rev=3669691","icon_2x":"https:\/\/ps.w.org\/steadydevs-venue-booking\/assets\/icon-256x256.png?rev=3669691","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/steadydevs-venue-booking\/assets\/screenshot-1.png?rev=3669691","caption":"The 3-step booking form with live availability."},{"src":"https:\/\/ps.w.org\/steadydevs-venue-booking\/assets\/screenshot-2.png?rev=3669691","caption":"Resource selection with group size and duration."},{"src":"https:\/\/ps.w.org\/steadydevs-venue-booking\/assets\/screenshot-3.png?rev=3669691","caption":"Admin \u2014 All Bookings with Approve \/ Reject \/ Cancel."},{"src":"https:\/\/ps.w.org\/steadydevs-venue-booking\/assets\/screenshot-4.png?rev=3669691","caption":"Appearance settings with live preview and colour presets."},{"src":"https:\/\/ps.w.org\/steadydevs-venue-booking\/assets\/screenshot-5.png?rev=3669691","caption":"The email designer, with a live preview of every message the plugin sends."},{"src":"https:\/\/ps.w.org\/steadydevs-venue-booking\/assets\/screenshot-6.png?rev=3669691","caption":"Quick Setup \u2014 opening hours, pricing and contact details in one page."}],"raw_content":"<!--section=description-->\n<p><strong>SteadyDevs Venue Booking<\/strong> lets your customers reserve anything you rent by time \u2014 sports courts and simulator bays, studios and treatment rooms, restaurant tables, equipment rental, salon chairs, meeting rooms and more. You define the resources, prices and hours; customers book online; you stay in control by approving every reservation.<\/p>\n\n<p>Nothing is confirmed until you say so, and the same slot can never be sold twice.<\/p>\n\n<h4>What you get<\/h4>\n\n<ul>\n<li><strong>Live multi-step booking<\/strong> \u2014 a clean 3-step flow (date &amp; time \u2192 resource &amp; group \u2192 confirm) with real-time availability, so the same slot can't be grabbed twice.<\/li>\n<li><strong>Admin approval workflow<\/strong> \u2014 every booking arrives as <em>Pending<\/em>. Approve, reject, or cancel from your dashboard.<\/li>\n<li><strong>Double-booking protection<\/strong> \u2014 approving a resource, date and time that already has an approved booking is blocked automatically.<\/li>\n<li><strong>Automatic customer emails<\/strong> \u2014 customers are notified the moment you approve or reject their booking, with editable HTML templates and a live preview.<\/li>\n<li><strong>Unlimited bookable resources<\/strong> \u2014 add as many bays, courts, rooms or tables as your venue has.<\/li>\n<li><strong>Theming without code<\/strong> \u2014 colour presets, layout controls (summary position, width, corner style), background style and an animation toggle, all with a live preview of the real form.<\/li>\n<li><strong>Reports<\/strong> \u2014 utilization, revenue and booking counts over any period, on screen.<\/li>\n<li><strong>Configurable booking rules<\/strong> \u2014 currency, coaching add-on, peak pricing, and a limited or unlimited booking window.<\/li>\n<li><strong>Shortcode<\/strong> \u2014 drop the form on any page with <code>[steadybook]<\/code>.<\/li>\n<li><strong>Built to extend<\/strong> \u2014 actions and filters at every point in the booking lifecycle (see the FAQ).<\/li>\n<\/ul>\n\n<h4>Who it's for<\/h4>\n\n<p>Driving ranges and indoor golf simulators, sports and racket clubs, wellness studios, salons and barbers, co-working and meeting rooms, equipment hire, and any business that books resources by time slot.<\/p>\n\n<h4>Privacy and external services<\/h4>\n\n<p>SteadyDevs Venue Booking stores bookings in your own WordPress database and sends email through WordPress itself. It makes <strong>no external connections<\/strong>: no third-party services, no analytics, no phoning home, no account required. Nothing leaves your server.<\/p>\n\n<h4>SteadyDevs Venue Booking Pro<\/h4>\n\n<p>The free plugin above is complete and unlimited \u2014 every feature it has is fully working, nothing is capped, there is no trial and nothing expires. <a href=\"https:\/\/steadydevs.com\/venue-booking\">SteadyDevs Venue Booking Pro<\/a> is a <strong>separate plugin<\/strong>, downloaded from our site, that adds features this one does not contain:<\/p>\n\n<p><strong>For any venue taking bookings<\/strong><\/p>\n\n<ul>\n<li><strong>Online payments<\/strong> \u2014 take a deposit or full payment at the time of booking, so a no-show costs the customer, not you<\/li>\n<li><strong>Automatic reminder emails<\/strong> before a booking<\/li>\n<li><strong>A front-desk staff role<\/strong>, so a receptionist can manage the day without an administrator account<\/li>\n<li>WhatsApp enquiry button<\/li>\n<li>Custom brand colours with live preview, beyond the built-in presets<\/li>\n<li>CSV export from Reports<\/li>\n<\/ul>\n\n<p><strong>For venues running classes and courses<\/strong><\/p>\n\n<ul>\n<li><strong>Class Portal<\/strong> \u2014 recurring classes and programmes sold as prepaid credits, with levels and per-level pricing<\/li>\n<li>A member login portal for self-service booking, cancellation and account management<\/li>\n<li>Credit packages, orders, and a running credit ledger per member<\/li>\n<li>Waitlists with timed seat offers, and a printable class register<\/li>\n<li>A public timetable shortcode<\/li>\n<\/ul>\n\n<p>Installing Pro keeps everything you already have: it reads the same data, so every booking, resource and setting carries over.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install through <strong>Plugins \u2192 Add New<\/strong> and search for \"SteadyDevs Venue Booking\", or upload the ZIP via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Venue Booking \u2192 Settings<\/strong> to set your business name, currency and booking window.<\/li>\n<li>Go to <strong>Venue Booking \u2192 Bays<\/strong> to configure your bookable resources and pricing.<\/li>\n<li>(Optional) Go to <strong>Venue Booking \u2192 Appearance<\/strong> to match the form to your brand.<\/li>\n<li>Add the shortcode <code>[steadybook]<\/code> to any page, then publish.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20customers%20book%3F\"><h3>How do customers book?<\/h3><\/dt>\n<dd><p>They open the page with the <code>[steadybook]<\/code> shortcode, pick a date and time, choose a resource and group size, and submit their details. The booking is saved as <em>Pending<\/em> for you to approve.<\/p><\/dd>\n<dt id=\"how%20do%20i%20approve%20or%20reject%20a%20booking%3F\"><h3>How do I approve or reject a booking?<\/h3><\/dt>\n<dd><p>Go to <strong>Venue Booking \u2192 All Bookings<\/strong>. Each booking has Approve, Reject and Cancel buttons. Approving or rejecting emails the customer automatically.<\/p><\/dd>\n<dt id=\"will%20it%20prevent%20double-bookings%3F\"><h3>Will it prevent double-bookings?<\/h3><\/dt>\n<dd><p>Yes. You cannot approve a booking for a resource, date and time that already has another approved booking.<\/p><\/dd>\n<dt id=\"how%20many%20resources%20can%20i%20add%3F\"><h3>How many resources can I add?<\/h3><\/dt>\n<dd><p>As many as you like. Nothing in this plugin is capped \u2014 resources, bookings, time slots, customers and emails are all unlimited, and there is no trial period.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20account%20or%20a%20licence%20key%3F\"><h3>Do I need an account or a licence key?<\/h3><\/dt>\n<dd><p>No. The plugin is fully functional the moment you activate it. It never contacts an external server, and there is nothing to sign up for.<\/p><\/dd>\n<dt id=\"do%20the%20emails%20require%20anything%3F\"><h3>Do the emails require anything?<\/h3><\/dt>\n<dd><p>Customers must provide an email when booking (the form collects it). For reliable delivery we recommend an SMTP plugin such as WP Mail SMTP \u2014 standard for any WordPress site that sends email.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20colors%20and%20layout%3F\"><h3>Can I change the colors and layout?<\/h3><\/dt>\n<dd><p>Yes. <strong>Venue Booking \u2192 Appearance<\/strong> offers colour presets, layout options (summary position, width, corner style), background style and an animation toggle, with a live preview of the real booking form. Custom colour pickers are part of SteadyDevs Venue Booking Pro.<\/p><\/dd>\n<dt id=\"can%20i%20rename%20%22bay%22%20to%20something%20else%3F\"><h3>Can I rename \"Bay\" to something else?<\/h3><\/dt>\n<dd><p>Yes. Under <strong>Appearance<\/strong>, set the singular and plural terms \u2014 Court, Room, Table, Chair, Studio \u2014 and they are used throughout the admin and the booking form.<\/p><\/dd>\n<dt id=\"what%20are%20the%20requirements%3F\"><h3>What are the requirements?<\/h3><\/dt>\n<dd><p>WordPress 5.0 or higher and PHP 7.2 or higher.<\/p><\/dd>\n<dt id=\"can%20developers%20extend%20the%20plugin%3F\"><h3>Can developers extend the plugin?<\/h3><\/dt>\n<dd><p>Yes. SteadyDevs Venue Booking fires WordPress actions and filters at every point in the booking lifecycle, so you can extend it from a child theme or a small companion plugin without editing the plugin itself.<\/p>\n\n<p>Actions:<\/p>\n\n<ul>\n<li><code>steadydevs_booking_created<\/code> ($booking_id, $booking) \u2014 after a booking row is created, before any email. Always \"pending\".<\/li>\n<li><code>steadydevs_booking_status_changed<\/code> ($booking_id, $new_status, $old_status, $booking) \u2014 after any admin status change.<\/li>\n<li><code>steadydevs_booking_approved<\/code> \/ <code>steadydevs_booking_rejected<\/code> \/ <code>steadydevs_booking_cancelled<\/code> ($booking_id, $booking) \u2014 convenience aliases.<\/li>\n<\/ul>\n\n<p>Filters:<\/p>\n\n<ul>\n<li><code>steadydevs_booking_total<\/code> ($total, $context) \u2014 adjust the stored price. Note the booking form calculates its own estimate for the summary panel, so changes here are not reflected in the figure the customer saw.<\/li>\n<li><code>steadydevs_time_slots<\/code> ($slots, $date, $bay_id) \u2014 open or close time slots. This is the place to add blackout dates, public holidays or per-weekday opening hours.<\/li>\n<li><code>steadydevs_bays_availability<\/code> ($bays, $date, $time, $duration) \u2014 per-resource availability.<\/li>\n<li><code>steadydevs_email_subject<\/code> \/ <code>steadydevs_email_body<\/code> \/ <code>steadydevs_email_recipient<\/code> ($value, $type, $booking) \u2014 rewrite an email before it sends.<\/li>\n<li><code>steadydevs_email_should_send<\/code> ($send, $type, $booking) \u2014 return false to cancel a send.<\/li>\n<\/ul>\n\n<p>Email $type is one of: admin_new, receipt, approved, rejected.<\/p>\n\n<p>Example \u2014 close Mondays:<\/p>\n\n<pre><code>add_filter('steadydevs_time_slots', function ($slots, $date) {\n    if ((int) date('w', strtotime($date)) === 1) {\n        foreach ($slots as $slot) { $slot-&gt;available = false; }\n    }\n    return $slots;\n}, 10, 2);\n<\/code><\/pre><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<p>Entries describing the Class Portal, member portal, credit packages, levels, waitlists, the staff role and reminder emails refer to the separate <strong>SteadyDevs Venue Booking Pro<\/strong> plugin (named SteadyBook Pro in older entries). The free plugin covers the resource booking engine, approvals, emails, theming and reports.<\/p>\n\n<h4>1.11.3<\/h4>\n\n<ul>\n<li>Changed: every function, class, constant, option, transient and hook name that used the generic <code>gbb_<\/code> \/ <code>GBB_<\/code> prefix now uses <code>steadydevs_<\/code> \/ <code>STEADYDEVS_<\/code> instead, per the WordPress.org review guideline on unique naming. If you hook into any of the actions or filters below, update the name. Nothing else about behaviour changes, and no settings are lost \u2014 the plugin copies your existing values across automatically the first time it loads after updating.<\/li>\n<\/ul>\n\n<h4>1.11.2<\/h4>\n\n<ul>\n<li>Note: version bump only, to stay in step with the Pro plugin's release. Nothing changes in this free plugin.<\/li>\n<\/ul>\n\n<h4>1.11.1<\/h4>\n\n<ul>\n<li>Changed: the plugin is renamed <strong>SteadyDevs Venue Booking<\/strong> and installs as steadydevs-venue-booking\/. The text domain follows the new slug; if you maintain your own translation files, rename them to match. Nothing else changes \u2014 same features, same data, same shortcode.<\/li>\n<\/ul>\n\n<h4>1.11.0<\/h4>\n\n<ul>\n<li><strong>Removed the two-resource limit.<\/strong> Add as many bays, courts, rooms or tables as you need. Nothing in this plugin is capped.<\/li>\n<li>Changed: features belonging to SteadyBook Pro are no longer part of this plugin in any form. The colour pickers, CSV export and the WhatsApp setting are implemented in the separate Pro plugin rather than being present here and switched off. Everything this plugin contains, it can do.<\/li>\n<li>Fixed: the email template screen could offer templates for messages the free plugin has no way to send.<\/li>\n<li>Fixed: translations were being loaded on <code>plugins_loaded<\/code> rather than <code>init<\/code>, which raises a notice on WordPress 6.7 and later.<\/li>\n<li>Changed: the Reports and User Guide screens now use the enqueued stylesheet instead of printing their own styles.<\/li>\n<li>Changed: fresh installs seed the full set of sample resources.<\/li>\n<\/ul>\n\n<h4>1.10.1<\/h4>\n\n<ul>\n<li>New: Members can pay for credit packages online. Set a payment method to be settled by a gateway and the member is sent to that provider's own checkout \u2014 no card details ever touch your site \u2014 with the credits added the moment the payment clears. HitPay is the first supported gateway, covering PayNow, cards, GrabPay, FPX and DuitNow. <strong>Pro.<\/strong><\/li>\n<li>New: A \"Test connection\" button beside the gateway keys, so a mistyped key is caught while you are still looking at the field rather than by the first member who tries to buy something. Nothing is charged. <strong>Pro.<\/strong><\/li>\n<li>New: The Class Portal setup screen now reads your site rather than reciting the same instructions to everyone: how many classes are on the week, whether the credit packs are still the samples, whether your pages carry their shortcodes, whether any payment method works. One step at a time is marked as next. <strong>Pro.<\/strong><\/li>\n<li>New: \"Create the pages for me\" publishes the login and portal pages with their shortcodes and selects them, in one click. An existing page that already has the shortcode is reused, not duplicated. <strong>Pro.<\/strong><\/li>\n<li>New: The timetable takes several days at once \u2014 tick Mon, Wed and Fri and one save puts the class on all three. Every day is clash-checked before anything is written. <strong>Pro.<\/strong><\/li>\n<li>Changed: A page selected as your login or portal page but missing its shortcode is now reported. It used to look configured while sending members somewhere blank. <strong>Pro.<\/strong><\/li>\n<li>Note: Nothing changes for payments you settle yourself. A transfer QR, bank details or cash at the desk still cost nothing in fees and still wait for you to confirm them, and both kinds can be offered side by side. A payment that does not add up is never credited automatically \u2014 it waits in the Orders queue with a note saying what looked wrong.<\/li>\n<\/ul>\n\n<h4>1.9.0<\/h4>\n\n<ul>\n<li>New: SteadyBook is now two plugins. This free edition covers the booking engine - the 3-step form, approvals, double-booking protection, emails, theming and reports - with unlimited bookable resources. SteadyBook Pro adds online payments, reminder emails, a front-desk staff role, the Class Portal, member logins, credit packages and waitlists.<\/li>\n<li>Note: The free edition is not a trial. Nothing expires, nothing phones home, and there is no key to enter. What it does not include is not switched off - it is not in the download at all.<\/li>\n<li>Note: For existing Pro sites, nothing changes. Pro stays in the same folder it has always been in, updates through Freemius exactly as before, and keeps every booking, resource and setting. Installing Pro over the free plugin also carries data across untouched - both read the same tables.<\/li>\n<li>Changed: The free edition is named SteadyBook Lite and installs as steadybook-lite\/ so that WordPress can tell the two apart. Running both at once is harmless: Pro switches the free plugin off when it activates, and says so.<\/li>\n<li>Changed: The text domain is now steadybook-lite, matching the WordPress.org slug, so community translations can be installed. If you maintain your own translation files, rename them to match.<\/li>\n<li>Changed: Reports export to CSV, and the custom colour pickers, are Pro. The colour presets and the live preview stay free - presets are guesswork without a preview.<\/li>\n<li>Changed: On Pro, what a site may use now follows its licence rather than which files are on disk. A lapsed subscription drops back to the free feature set instead of keeping everything indefinitely - and it keeps taking bookings rather than going dark, which is what having a free edition makes possible.<\/li>\n<li>Changed: Sample resources and the default booking-form copy are no longer written for one trade.<\/li>\n<li>Changed: The Emails screen only shows templates the installed edition can actually send.<\/li>\n<li>Security: Booking duration and group size are enforced on the server, not only in the form.<\/li>\n<li>Security: Request data is unslashed before sanitising, and query-string values are sanitised at the point of use.<\/li>\n<li>New: languages\/steadybook-lite.pot, so the plugin can be translated.<\/li>\n<li>Developer: Entitlement is resolved through a provider interface, filterable with <code>gbb_license_provider<\/code>.<\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li>New: A front-desk role. \"Class Portal Staff\" gets the Class Portal as its own menu and nothing else - no plugins, themes, users or site settings - so a receptionist confirming payments no longer has to be a WordPress administrator. Setup stays administrators-only, since it decides what members are charged and how they log in.<\/li>\n<li>New: A class register. Open Register, pick a class, mark people present or absent. Marking an absence records the no-show and never touches their credit - refunding a missed class stays your decision, under Bookings. A member's record now shows \"18 of 24 marked classes attended\".<\/li>\n<li>New: Waitlists, off by default. Members with enough credits can queue for a full class. The moment a seat frees it is offered to whoever waited longest and held for them - nobody else can take it while the hold runs - and they are emailed to claim it from the portal. If they do not, the hold expires and it passes to the next person. Holds never run past the class start, and how long they last is yours to set.<\/li>\n<li>New: The waitlist for a class is listed under its register, in order, so the front desk can answer \"am I next?\" without opening the database.<\/li>\n<\/ul>\n\n<p>Earlier releases are listed in changelog.txt, which ships with the plugin. The directory trims very long changelog sections, so only the recent entries are repeated here.<\/p>","raw_excerpt":"Take bookings for bays, courts, rooms, tables and studios. Live availability, admin approval, and double-booking protection.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/350169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=350169"}],"author":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/seanliew"}],"wp:attachment":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=350169"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=350169"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=350169"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=350169"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=350169"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=350169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}