Sanctuary Hotel Booking
A WordPress plugin that allows users to add hotel or guest house booking functionality to their WordPress website.
by Sanctuary Hotels · github.com/konchetobe/wordpressplugin-hotel-bookings-megamot · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/konchetobe/wordpressplugin-hotel-bookings-megamot/archive/refs/heads/main.zipA comprehensive hotel/guest house booking reservation system with Stripe/PayPal payments and calendar event generation.
Description
Sanctuary Hotel Booking is a powerful WordPress plugin that transforms your website into a fully functional hotel or guest house booking platform.
Key Features:
- Room Management - Create and manage multiple room types with images, amenities, and pricing
- Availability Calendar - Real-time availability checking prevents double bookings
- Dynamic Pricing - Set seasonal rates, weekend premiums, early bird discounts
- Stripe Payments - Accept credit cards, Apple Pay, and Google Pay
- Calendar Events - Generate .ics files for guests to add bookings to their calendars
- Admin Dashboard - View bookings, revenue stats, and manage your property
- Shortcodes - Easily embed booking forms and room lists anywhere on your site
- Email Notifications - Automatic confirmation emails for bookings
Shortcodes:
[shb_room_search]- Display room search form with date picker[shb_room_list]- Display list of all available rooms[shb_room_list type="deluxe" columns="3"]- Display specific room types[shb_booking_form room_id="123"]- Display booking form for a specific room[shb_booking_confirmation]- Display booking confirmation page[shb_my_bookings]- Allow guests to view their bookings
Installation
- Upload the
sanctuary-hotel-bookingfolder to/wp-content/plugins/ - Activate the plugin through the 'Plugins' menu in WordPress
- Go to Hotel Booking > Settings to configure your options
- Add your Stripe API keys for payment processing
- Create rooms via Hotel Booking > Rooms > Add New Room
- Use shortcodes to display booking forms on your pages
Frequently Asked Questions
How do I set up Stripe payments?
Go to Hotel Booking > Settings and enter your Stripe API keys. You can use test keys for development and switch to live keys when ready.
Can I customize the booking form?
Yes, the plugin uses template files that can be overridden in your theme. Copy templates from /plugins/sanctuary-hotel-booking/templates/ to /your-theme/sanctuary-hotel-booking/ and modify as needed.
How do guests download calendar events?
After completing a booking, guests see a "Add to Calendar" button that downloads an .ics file compatible with Google Calendar, Apple Calendar, and Outlook.
Can I block dates for maintenance?
Yes, go to Hotel Booking > Availability to create date blocks for any room.
Screenshots
- Room search and booking form
- Room listing with pricing
- Booking confirmation with calendar download
- Admin dashboard with stats
- Room management
- Settings page
Changelog
1.4.3
- Room Setup screen — rooms are now created and edited on a plugin-owned Hotel Booking → Rooms screen instead of the Gutenberg editor. One form covers name, slug, description, featured image + gallery (media picker), location, room type, price, guests, bed, size, floor, amenities, policies, and status.
- Rooms list — a plugin list with location filter, type/location/price columns, view-page links, and guarded deletion (refused while the room has active bookings).
- Room Types manager — the Room Types screen now creates, renames, and deletes types (with a per-type room count) alongside the defaults editor; deleting a type is refused while rooms use it.
- Searchable attributes — the room search gained bed type, "Views & outdoor", and amenity filter chips. Multi-select amenities match rooms that have ALL chosen options.
- Rich room pages — each room's public page now shows a photo gallery, description, specs (guests, bed, size, floor, from-price, cancellation policy), grouped amenities, the property card, and an on-page booking form with live pricing.
1.4.2
- Room type defaults — room types now carry a defaults template (base price, max guests, bed type, size, floor, amenities, night limits, cancellation policy) that prefills new rooms; rooms stay fully editable per unit.
- Room Types screen — new Hotel Booking → Room Types page to edit each type's defaults; the room editor's type dropdown is now driven by the real taxonomy (legacy types are preserved).
- Location property hub — the Locations list shows a per-type room breakdown with Rooms/View Page actions, and each location's edit page lists its rooms with an "Add Room here" link that preselects the location.
- Safe location deletion — deleting a location now requires an admin, asks for confirmation, and refuses while rooms or bookings still reference it.
- Location property pages — each location's public URL now renders a real property page with hero/contact details, room-type summary cards (count + from price), and an availability search scoped to that property.
- Room type search filter — the room search form gained room-type filter chips; search results are now server-rendered from a single shared card partial used by both lists and search.
1.4.1
- Fix — resolved a fatal error on the Hotel Booking → Locations admin page. The Locations controller class was never loaded, so opening the page crashed with "There has been a critical error on this website." The missing include is now loaded.
1.4.0
- Stable release of the multi-location booking system.
- Fixes — rooms created after migration now keep their room-type term in sync so scoped pricing always matches; pricing rules resolve deterministically (dated rules beat always-on rules within a scope).
- Fixes — booking links from room lists and search cards carry the room's location; the booking form falls back to the room's own location instead of erroring on a stale
locationparameter. - Fixes — Stripe checkout uses the location's currency and rounds amounts correctly; a confirmed webhook re-claims nights if the hold cleanup freed them mid-payment.
- Fixes — location managers are now scoped to their assigned locations across the rooms list, bookings, availability, reports, and admin AJAX actions.
- Fixes — schema work (dbDelta) no longer runs on every request; the stored DB version is finalized after upgrading from 1.4.0-beta.1.
1.4.0-beta.1
- Multiple locations — new
shb_locationpost type with address, contact, time zone, currency, and check-in/out times. - Default location migration — attaches existing rooms and snapshots location data onto historical bookings; read-only migration report flags orphans, invalid dates, and overlapping legacy bookings.
- Room-night allocation table — per-night inventory with a unique
(room_id, stay_date)index that makes double bookings impossible. - Transactional booking creation — availability revalidation, nightly claims, price snapshots, and booking creation commit or roll back together.
- Stripe webhook — payment confirmation now happens only from a verified
checkout.session.completedwebhook; expiring 30-minute holds are cleaned up automatically. - Scoped pricing — rules can target a global scope, location, room type at a location, or a specific room with per-night precedence.
- Location manager role — manage rooms/bookings only for assigned locations.
- Reports — occupancy and revenue per location and room.
- Frontend location selector — search form, room lists, booking forms, confirmation, emails, and calendar events are location-aware.
- GitHub Actions release workflow —
Bump Version & Releasebuilds a ZIP and publishes a GitHub Release that auto-updates the plugin.
1.3.1
- Added GitHub Release automatic updates using the bundled Plugin Update Checker.
- Optimized availability and pricing lookups and added schema versioning for new indexes.
- Hardened public booking input, Stripe callback ownership checks, calendar download links, and dynamic search-result rendering.
1.0.0
- Initial release
- Room management with custom post types
- Booking system with availability checking
- Stripe payment integration
- Dynamic pricing rules
- Calendar (.ics) file generation
- Admin dashboard with stats
- Email notifications
Upgrade Notice
1.0.0
Initial release of Sanctuary Hotel Booking plugin.