Linux 软件免费装
Banner图

Seat & Table Booking for WooCommerce

开发者 macvej
更新时间 2026年9月18日 00:25
PHP版本: 8.1 及以上
WordPress版本: 7.1
版权: GPLv2 or later
版权网址: 版权信息

标签

woocommerce booking floor plan restaurant reservations table booking seating chart

下载

1.6.2

详情介绍:

Seat & Table Booking for WooCommerce is a table reservation and seat booking plugin that turns any WooCommerce shop into a booking system for a room with a layout: a restaurant's tables, a cinema's seats, a theatre's rows, a co-working space's desks, a wedding hall's seating plan. It adds a Booking venue product type to WooCommerce, and one product is one floor plan. Upload a photo or a drawing of the room, drag the tables to where they really are, give each one a price and a capacity, and set the timeslots it can be booked in. Customers then pick a date, a timeslot and a table straight off the seating chart, and the table goes into the cart like any other WooCommerce product. WooCommerce handles the payment, the order and the emails - there is no second checkout, no second dashboard, no subscription and no external service. Every paid reservation gets a QR check-in code, and door staff scan it from a full-screen scanner page built into the plugin. Key features For the shop owner For the customer Who it is for How it works
  1. Create a product and set its type to Booking venue.
  2. On the Floor plan tab, upload a picture of the room and draw the tables or seats on it.
  3. On the Booking times tab, set the weekly timeslots and any closed dates.
  4. Publish. Customers book from the product page, pay through the normal WooCommerce checkout, and receive a QR check-in code with their order confirmation.
How double bookings are prevented Adding a table to the cart creates a short-lived hold on that exact unit, date and timeslot. The hold is enforced by a database uniqueness constraint, so two customers racing for the last table cannot both win - the second is told the table has just gone. Holds that are never paid for expire on their own and the table returns to the floor plan. Check-in at the door Every paid reservation gets a QR check-in code, shown on the confirmation email, the thank-you page and My Account. Staff scan it at /table-check-in/, a full-screen scanner page built into the plugin, restricted to a "Scanner" role that can check guests in and nothing else. The scanner has a flashlight toggle and a type-in field for a desk without a camera. The same check-in also works over a REST API, so a third-party scanner app - a phone app, a handheld reader, whatever the door already uses - can call it too. The API is off by default; a shop owner turns it on under Seats & Tables > Settings > Scanner / API, and a scanner app authenticates with a WordPress Application Password over HTTPS, the same mechanism WordPress ships for any external app that needs to act as a user. Compatibility Third-party code Bundles Fabric.js 7.4.0 (MIT) for the admin floor plan editor, in inc/product-type/js/lib/, as published on npm (fabric/dist/index.min.js, https://www.npmjs.com/package/fabric/v/7.4.0). Unminified source (the project tags this release v740): https://github.com/fabricjs/fabric.js/tree/v740 Also bundles endroid/qr-code 5.1.0 (MIT) for generating check-in QR codes, together with its dependencies bacon/bacon-qr-code 3.0.1 (https://github.com/Bacon/BaconQrCode) and dasprid/enum 1.0.6 (https://github.com/DASPRiD/Enum), both BSD-2-Clause, installed with Composer, unmodified, in inc/qr/lib/qrcodegen/. The MIT licence applies to endroid/qr-code itself only. Source: https://github.com/endroid/qr-code And jsQR 1.4.0 (Apache-2.0) for decoding QR codes in the check-in scanner, in inc/scanner/js/jsqr.js. Source: https://github.com/cozmo/jsQR No other minified or compiled code is shipped, and no assets are loaded from a CDN. External services None. This plugin makes no outbound requests, sends no analytics or telemetry, and needs no account anywhere. QR codes are generated on your own server by the bundled library, and every script and stylesheet is served from your own site.

安装:

  1. Install and activate WooCommerce.
  2. Upload the plugin to /wp-content/plugins/ and activate it, or install it from Plugins > Add New.
  3. Create a product, set its type to "Booking venue", then use the "Floor plan" and "Booking times" tabs to lay out the venue.
  4. Optional: set the hold duration, unpaid-order release window, booking notice and check-in window under Seats & Tables > Settings.
Deleting the plugin removes its settings and the Scanner role. Bookings, floor plans and QR check-in data are kept, so reinstalling the plugin picks up exactly where you left off - unless STBK_REMOVE_ALL_DATA is defined as true in wp-config.php before deleting, which also drops the database tables and the generated QR images. Deactivating it removes nothing.

升级注意事项:

1.6.2 Hardening from the wordpress.org review: the General settings option now stores only the keys it knows. No visible change. Recommended for everyone. 1.6.1 Security and performance. Closes a case where an outside caller could reach check-in with the API switched off, requires an Application Password over HTTPS for third-party scanner apps, and makes the check-in block in order emails far lighter on a busy day. Recommended for everyone. 1.6.0 A month calendar for Booking times, a new Settings > Appearance tab so the booking interface follows your theme, and a round of security hardening from the wordpress.org review. Recommended for everyone. 1.5.1 Security hardening for every request handler and the cart, plus a round of fixes to the floor plan editor and order lifecycle from the wordpress.org review. Recommended for everyone. 1.5.0 Fixes check-in times being shown shifted by the site's UTC offset on the Bookings screen, and makes that screen substantially faster on venues with many units.

常见问题:

Does it work with High-Performance Order Storage (HPOS)?

Yes. The plugin declares HPOS compatibility and reads and writes orders only through the WooCommerce order API, so it works with both order storage modes.

Does it work with the Cart and Checkout blocks?

Yes, and with the classic shortcode cart and checkout.

Can I run more than one venue?

Yes. Every Booking venue product is its own floor plan with its own timeslots, prices and settings, and one order can hold tables at several venues.

Which timezone are bookings in?

The site's timezone, as set under Settings > General. Timeslots, booking dates, the "booking notice" cut-off and the check-in window all use it.

What happens if a customer abandons the cart?

The hold expires after the configured number of minutes (15 by default) and the table becomes bookable again. If the customer returns to a cart with an expired hold, the line is removed and they are told why. Removing a line and pressing "Undo" takes the hold again if the table is still free.

What happens if an order is cancelled, refunded or deleted?

The booking is released, its QR code is cancelled and the table is immediately bookable again. Trashing or deleting an order does the same.

What happens to an order that is never paid for?

Its tables are released after the window set in Seats & Tables > Settings (60 minutes by default), the order is cancelled and a note is added to it. Orders on hold awaiting a bank transfer are never released automatically.

Can one table be booked twice in the same timeslot?

No. A unique index on unit, date and timeslot makes that impossible at the database level.

Does it depend on WP-Cron?

No. Expired holds are treated as free the moment they expire; a five-minute WP-Cron event only tidies the rows up. The unpaid-order release also runs on that event, so on a site where WP-Cron is disabled it runs whenever the system cron calls wp-cron.php.

Can staff hold a table back for a walk-in?

Yes. Seats & Tables > Bookings, pick the venue and the date, then press "+ Block" in the empty cell for that sitting. The table disappears from the floor plan for that sitting until the block is released.

How do staff scan tickets at the door?

Open /table-check-in/ on a phone or tablet logged in as a user with the "Scanner" role and point the camera at the guest's QR code. A valid, unused code within its check-in window is admitted and marked used; a cancelled, already-used or out-of-window code is refused, with the reason shown on screen.

What can the Scanner role do?

Check guests in and nothing else. A Scanner user cannot see orders, products or the dashboard. Shop managers and administrators can scan as well.

Can a third-party scanner app call the API?

Yes, once a shop owner turns on "Enable API" under Seats & Tables > Settings > Scanner / API - it is off by default. The app authenticates with a WordPress Application Password and calls stbk/v1/scanner/checkin/{id} the same way the built-in scanner page does. The settings page documents every response. An Application Password is required; a real account password is not accepted, and the site must be on HTTPS, because that is what WordPress itself requires before it will accept one. The built-in scanner page is unaffected either way - it uses the staff member's own login session.

What if a guest loses the email with the QR code?

Staff can resend it from the Bookings screen. The code is also shown on the WooCommerce thank-you page and in the order details under My Account, so a signed-in customer can pull it up there without waiting on an email at all.

What is removed when I delete the plugin?

Its settings, the Scanner role and its scheduled event. Bookings, floor plans and QR data stay unless STBK_REMOVE_ALL_DATA is defined as true in wp-config.php first.

更新日志:

1.6.2 1.6.1 1.6.0 Booking times Appearance Storefront Performance and isolation Review round 1.5.1 1.5.0 1.4.0 1.3.0 1.2.0 1.1.0 1.0.0