Complete Documentation
This guide covers installing, configuring, customizing, and testing the Booking Pro theme and the Booking System plugin — from first setup through every major admin screen and front-end feature.
1. Overview — what this product is
Booking Pro is a premium niche WordPress theme for hotel, villa, tour, activity, car, and package businesses. Design, catalog listings, Customizer options, page templates, and marketing content live in the theme.
Booking System is a separate, independent plugin that provides the booking engine: availability, pricing, cart, checkout, payments, customers, coupons, taxes, reviews, wishlist, map search, reports, iCal, housekeeping, and notifications.
What the theme handles
- Rooms, Villas, Tours, Activities, Cars, Travel Bundles CPTs
- Homepage Section Manager (enable / reorder / design)
- Innerpage and Single Catalog Customizer
- Demo setup, sticky book bar, SEO schema helpers
- Marketing CPTs (Team, Offers, Stay Packages, and more)
What the plugin handles
- Create and manage bookings
- Availability calendar and rules
- Dynamic price calculation
- Payments (Stripe, PayPal, Razorpay, bank, pay-at-hotel, and more)
- Guest portal, cart, shortcodes, REST API
- Staff Web Panel — front-end login for hotel staff (see §35)
[booking_form] only work when the plugin is enabled.
2. Architecture (how they connect)
┌─────────────────────────────────────────────────────────┐ │ WordPress site (http://localhost/test/) │ │ │ │ ┌──────────────────────┐ ┌─────────────────────────┐ │ │ │ Theme: booking-pro │ │ Plugin: booking-system │ │ │ │ prefix: BPro_ / bpro │ │ prefix: BS_ / bs_ │ │ │ │ │ │ │ │ │ │ CPT catalog + meta │──▶│ reads item_type + id │ │ │ │ templates / CSS │ │ availability / pricing │ │ │ │ Customizer UI │ │ creates booking rows │ │ │ └──────────────────────┘ └─────────────────────────┘ │ │ │ │ │ │ └──────── front shortcodes ┘ │ │ │ │ Staff Web Panel: /staff-panel/ (plugin BS_Staff_Panel) │ │ → WordPress login + role menus + admin view reuse │ └─────────────────────────────────────────────────────────┘
Item type mapping
Front / plugin item_type | Theme CPT | Typical archive slug |
|---|---|---|
room | bpro_room | /rooms/ |
villa | bpro_villa | /villas/ |
tour | bpro_tour | /tours/ |
activity | bpro_activity | /activities/ |
car | bpro_car | /cars/ |
package (bookable) | bpro_bundle | /bundles/ |
bpro_bundle= bookable Travel Bundle → pluginitem_type=packagebpro_package= marketing “Stay Packages” (content CPT, not the booking engine package)
3. Requirements
| Item | Minimum | Notes |
|---|---|---|
| WordPress | 6.0+ | Tested toward 6.7 |
| PHP | 7.4+ | Local WAMP example: C:\wamp64\bin\php\php7.4.33\php.exe |
| MySQL / MariaDB | Any modern version | Plugin creates wp_bs_* tables |
| Permalinks | Pretty permalinks | Post name recommended |
| HTTPS | Recommended on live sites | Required for Stripe / PayPal / Razorpay in production |
| Optional | WooCommerce | Only if you want the WC checkout bridge |
Local paths (this project)
- Site:
http://localhost/test/ - Theme:
wp-content/themes/booking-pro/ - Plugin:
wp-content/plugins/booking-system/
4. Installation (step by step)
Prepare WordPress
Start WAMP (Apache + MySQL). Open the site in a browser. Log in to admin at /wp-admin/.
Activate the plugin
Plugins → Installed Plugins → Booking System → Activate.
On activation, database tables are created (BS_Install). If an older DB version exists, maybe_upgrade() runs.
Activate the theme
Appearance → Themes → Booking Pro → Activate.
After activation you may see admin notices:
- “Setup Demo Now” — until demo content is installed
- “Booking System plugin required” — if the companion plugin is not active (
inc/plugin-notice.php)
Flush permalinks
Settings → Permalinks → Save Changes (no need to change settings). This is required for CPT archives such as /rooms/ and /activities/.
5. First-run setup (recommended order)
- Booking System → Settings — currency, emails, pages, gateways (see §23).
- Appearance → Setup Demo — sample rooms, pages, and menus (see §6).
- Appearance → Customize — enable and order homepage sections.
- Settings → Reading — set Homepage to a static page (demo usually sets the Front Page).
- Appearance → Menus — confirm the Primary menu (demo often attaches links).
- Run one real booking test: Room single → dates → checkout → confirm it appears under admin Bookings.
- Staff Web Panel — open
/staff-panel/, log in as admin, confirm dashboard loads (see §35).
bpro_traveler_ensure_pages).
6. Demo content
Path: Appearance → Setup Demo (inc/demo-setup.php).
What typically gets installed
- Sample Rooms / Villas / Tours (plus traveler items if seeded)
- Sample Offers and Stay Packages (marketing CPTs)
- Homepage, About, Contact, Rooms, Booking, and related pages
- Page template assignments
- Menus, sample Customizer content, and section items
- Brand colors (linen / charcoal palette — see §16)
- Footer widget area
footer-1cleared (removes default Archives / Categories widgets)
Buttons
| Action | Meaning |
|---|---|
| Install demo | Create content for the first time |
| Reinstall | Reset / recreate demo-aware content |
The plugin also offers seeding under Booking System → Tools → Seed demo data.
7. Marketplace package (selling the product)
Booking Pro v1.4.0 is packaged for commercial distribution. The theme alone is not enough — always ship the Booking System plugin in the same bundle.
What buyers receive
| File / folder | Purpose |
|---|---|
booking-pro/ | Theme (design, CPTs, Customizer, demo setup) |
booking-system/ | Required plugin (availability, checkout, payments) |
readme.txt | WordPress-standard theme readme (inside theme folder) |
screenshot.png | Theme preview image (1200×900 recommended) |
docs/BOOKING-PRO-COMPLETE-GUIDE.html | This documentation (includes §35 Staff Web Panel) |
Recommended ZIP structure
booking-pro-bundle-v1.4.0.zip ├── booking-pro/ ← upload to wp-content/themes/ ├── booking-system/ ← upload to wp-content/plugins/ ├── documentation/ │ └── BOOKING-PRO-COMPLETE-GUIDE.html └── LICENSE.txt
Before you publish
- Update Theme URI and Author URI in
style.css(replacehttps://bookingpro.themewith your store URL). - Run a fresh WordPress install test: theme + plugin → Setup Demo → one full booking.
- Install the Theme Check plugin locally and fix any reported warnings.
- Provide license terms (GPL theme + your commercial plugin license if applicable).
- Host a live demo with both packages active.
- Document the Staff Web Panel URL for buyers (
/staff-panel/).
booking-pro, folder booking-pro). Older docs may reference “TravelCraft” — ignore that name.
9. Catalog custom post types
Core
bpro_room— supports title, editor, thumbnail, excerptbpro_villabpro_tourbpro_property— properties
Taxonomies (rooms example)
bpro_room_type— Room Typesbpro_room_category— categories- Amenity-related taxonomies (see
inc/post-types.php)
Single template location
Singles live in single-pages/:
single-bpro_room.phpsingle-bpro_villa.phpsingle-bpro_tour.phpsingle-bpro_activity.phpsingle-bpro_car.phpsingle-bpro_bundle.php
Loader: inc/setup.php → single_template filter.
Shared markup: template-parts/catalog/single.php (gallery, booking sidebar, reviews, wishlist, quick facts — controlled by Customizer toggles).
10. Content / marketing CPTs
File: inc/content-post-types.php
| CPT | Use |
|---|---|
bpro_testimonial | Homepage testimonials section |
bpro_team | Team section / Team page |
bpro_service | Services grid |
bpro_amenity | Amenities icons / list |
bpro_offer | Special offers |
bpro_package | Stay Packages (marketing — not the bookable bundle) |
11. Room / Villa / Tour field groups
Fields are centralized. Room example: inc/rooms/class-room-fields.php.
Meta prefix: _bpro_room_*. The plugin catalog layer reads price and inventory from these fields.
Room UI groups
code, status, featured, short description, video
units / stock-style fields
guests, beds
base price, extra guest, and more
date ranges
blocked dates + booking mode / lat / lng
plans and features
policies
advanced
Booking mode (all major catalog types)
- Instant book — booking status comes from the Instant book status setting (default: confirmed)
- Request to book — typically a pending / request flow
Map fields: Latitude, Longitude, Map address label — used by the Map Search shortcode.
12. Traveler types — Activities, Cars, Bundles
Files: inc/traveler/register.php, class-traveler-meta.php, frontend.php.
Activity (bpro_activity)
- Adult price, Child price
- Max guests per slot, Duration
- Available dates (one per line
YYYY-MM-DD) - Booking mode, lat/lng, meeting point
Car / Transfer (bpro_car)
- Price per day, optional one-way transfer price
- Fleet count, max passengers
- Vehicle type: sedan / SUV / van / luxury / airport transfer
- Booking mode and map fields
Travel Bundle (bpro_bundle → item_type package)
- Package pricing and linked inventory fields (see meta registration)
- Booked through the plugin package handlers
Front pages auto-created
- Activities → template
page-activities.php - Cars →
page-cars.php - Bundles →
page-bundles.php - Map & Wishlist →
page-map.php
13. Homepage Section Manager
Appearance → Customize → Homepage Section Manager (priority ~30).
Section Order
Drag-and-drop order control. Stored as JSON in theme mod bpro_homepage_sections.
Per-section options (every section)
- Enable section checkbox
- Design variant select (Design 01, 02… auto-discovered from files)
- Content fields: title, subtitle, description, image, buttons, limits, columns, and more
- Hero: slides repeater (“Add new slide”)
- Some sections: items / gallery repeaters
- Color controls where registered
Available homepage sections
| ID | Label | Typical fields |
|---|---|---|
| hero | Hero | slides, title, CTA, video |
| booking-search | Booking Search | title, subtitle |
| about | About | text + image + button |
| rooms / villas / tours | Catalog grids | title, limit, columns |
| activities / cars / bundles | Traveler grids | title, limit, columns |
| map-search | Map Search | title, subtitle → plugin map |
| amenities / services | Features | limit |
| destinations / offers / packages | Marketing | items / limit |
| gallery / testimonials / team / faq | Social proof | images / limit / items |
| blog / cta / newsletter / contact | Conversion | CTA + contact details |
Design file convention
template-parts/sections/{section}/{section}-01.php
assets/css/sections/{section}/{section}-01.css
When you add a new design file, it appears automatically as a Customizer choice.
booking-search-01— white panel overlaps the hero; uses[booking_search]shortcode insidebooking-search-01__panelmap-search-01— dedicated map canvas (~480px height) with Leaflet markers from the pluginhero-01— slider nav sits above the booking form (z-index stack)
Templates: template-parts/sections/booking-search/booking-search-01.php, map-search/map-search-01.php
14. Innerpage Manager
Customize → Innerpage Manager — sections, titles, and colors per page template.
Covered templates include:
- About, Contact, FAQ, Gallery, Services, Amenities, Team, Testimonials
- Rooms, Villas, Tours listing pages
- Activities, Cars & Transfers, Travel Bundles
- Map & Wishlist, Booking, Destinations, Offers, Packages, Full width, and more
Listing pages often include a limit control (defaults 12 / 9).
CSS scope uses body classes such as bpro-page-rooms (see inc/innerpage-customizer.php).
15. Single Catalog Manager
Customize → Single Catalog Manager (priority ~31).
Types: Single Room, Villa, Tour, Activity, Car/Transfer, Travel Bundle.
Section toggles (every type)
| Key | Block |
|---|---|
| hero | Hero header |
| gallery | Gallery |
| overview | Overview / description |
| taxonomies | Classification & amenities |
| details | Full details accordion |
| booking | Booking form sidebar |
| highlights | Highlights list |
| quick_facts | Quick facts |
| reviews | Reviews block |
| wishlist | Wishlist button |
| sticky | Sticky book bar |
Extras: CTA text, layout, titles, color controls. Body classes: bpro-single-room, bpro-single-activity, and so on.
16. Typography & global look
- Customize → Typography — fonts / sizes (
inc/typography-customizer.php) - Customize → Brand Colors — live CSS variables on the front page (
inc/customizer.php) - Design tokens:
assets/css/global.css(CSS variables) - Header / footer design variants under
template-parts - Google Fonts: Cormorant Garamond (display) + Outfit (body) — loaded from
fonts.googleapis.com
Default color palette (v1.4.0 — linen / charcoal)
| Token / use | Default |
|---|---|
| Body background | #f3eee7 (linen) |
| Surface / cards | #fffcf8 |
| Primary / headings | #313131 (charcoal) |
| Secondary / dark sections | #252525 |
| Accent / labels | #8a8178 |
| Buttons | bg #313131, text #f3eee7, hover #000000 |
| Borders | #ddd7ce |
Demo setup and Customizer both seed these values. Buyers can override every color under Customize → Brand Colors.
17. Core templates (404, search, archives)
Added in v1.4.0 for marketplace / Theme Check readiness.
Error & search
| Template | File | When used |
|---|---|---|
| 404 Not Found | 404.php | Missing URLs — branded message + search form + home link |
| Search results | search.php | ?s=keyword blog / site search |
Catalog archives (native CPT URLs)
| URL | Template | Layout |
|---|---|---|
/rooms/ | archive-bpro_room.php | Card grid via template-parts/catalog/archive-grid.php |
/villas/ | archive-bpro_villa.php | Same — villa cards with bedrooms / guests |
/tours/ | archive-bpro_tour.php | Same — duration + price |
/activities/ | archive-bpro_activity.php | Plugin shortcode list |
/cars/ | archive-bpro_car.php | Plugin shortcode list |
/bundles/ | archive-bpro_bundle.php | Plugin shortcode list |
Room / villa / tour archives enqueue the matching section CSS (rooms-01.css, etc.) for consistent styling with homepage cards.
Inner listing pages (e.g. page template “Rooms”) remain available as an alternative layout.
18. Page templates
Folder: page-templates/. On the page edit screen, use the Template dropdown.
| Template | File | Typical content |
|---|---|---|
| About | page-about.php | About section |
| Contact | page-contact.php | Contact + form |
| Rooms / Villas / Tours | page-rooms.php … | Catalog grids |
| Activities / Cars / Bundles | page-activities.php … | Traveler grids |
| Map & Wishlist | page-map.php | [booking_map] + wishlist |
| Booking | page-booking.php | Search + [booking_form] |
| FAQ / Gallery / Team / … | respective files | Matching sections |
| Full Width | page-full-width.php | No sidebar shell |
19. Theme presentation shortcodes
Every homepage section ID becomes a shortcode:
[hero design="1"] [rooms design="2" limit="6" columns="3"] [booking-search] [activities] [map-search]
Aliases: [hero1], [rooms02], and similar (inc/shortcodes.php).
[booking_form]).
Theme shortcodes only render UI sections.
20. Theme file map (quick reference)
booking-pro/
├── functions.php # bootstrap + requires (BPRO_VERSION)
├── style.css # theme header + marketplace metadata
├── readme.txt # WordPress.org-style readme
├── screenshot.png # theme preview image
├── 404.php / search.php # error + search templates (v1.4.0)
├── archive-bpro_*.php # room / villa / tour / activity / car / bundle archives
├── front-page.php # homepage sections
├── header.php / footer.php
├── single-pages/ # CPT singles
├── page-templates/ # inner pages
├── template-parts/
│ ├── catalog/single.php
│ ├── catalog/archive-grid.php # shared archive cards (v1.4.0)
│ ├── header/ footer/
│ └── sections/… # homepage designs
├── assets/css|js|…
└── inc/
├── setup.php, enqueue.php, helpers.php
├── customizer.php, innerpage-customizer.php, single-customizer.php
├── post-types.php, content-post-types.php, catalog*.php
├── rooms/ villas/ tours/ traveler/
├── demo-setup.php, demos.php, plugin-notice.php
└── sticky-book.php, forms.php, schema.php…
21. Booking System plugin — overview
- Theme: 1.4.0 · Plugin: 1.4.0 · DB version: 1.2.0
- Main file:
booking-system/booking-system.php - Text domain:
booking-system - Works with any theme via shortcodes / REST / PHP helpers — best paired with Booking Pro
Core classes (includes/)
BS_Booking— create/update bookingsBS_Availability— date conflictsBS_Pricing— totals, rulesBS_Cart/ checkout / guest portalBS_Payment/ gateways / online checkoutBS_Coupon,BS_Tax,BS_Service
BS_Wishlist,BS_Reviews,BS_Map_SearchBS_Packages— package/bundle bookingBS_iCal,BS_Housekeeping,BS_ReportsBS_Notification, messaging, cronBS_REST_API,BS_AjaxBS_WooCommercebridgeBS_Staff_Panel— front-end staff workspace + role menusBS_Capabilities— staff roles and permissions
23. Plugin Settings — every option in detail
Path: Booking System → Settings. Stored in option key bs_settings.
A. General
| Option | Field name | Default / notes |
|---|---|---|
| Currency code | currency | INR |
| Currency symbol | currency_symbol | ₹ |
| Currency position | currency_position | before / after |
| Booking number prefix | booking_number_prefix | BK → BK1001… |
| Default status | default_status | pending or confirmed |
| Instant book status | instant_book_status | Status used when a listing is Instant book |
| Auto-approve reviews | reviews_auto_approve | Checkbox — publish immediately |
| Min / Max nights | min_nights / max_nights | Typically 1 / 30 |
| Advance booking hours | advance_booking_hours | 0 = no cutoff |
| Reminder days before | reminder_days_before | Cron reminders |
| Deposit % | deposit_percent | 0 = full amount depending on flow |
| Admin email | admin_email | Booking alerts |
| Checkout page | checkout_page | WordPress page ID select |
| Confirmation page | confirmation_page | Thank-you page |
B. Payments
| Option | Notes |
|---|---|
| Enabled gateways | Checkboxes from registered gateways (Pay at Hotel + filtered list: Stripe, PayPal, Razorpay, bank, and more) |
| Bank transfer instructions | Text shown to the guest |
| Stripe secret + publishable keys | Live or test keys |
| PayPal client ID + secret | Plus Sandbox checkbox |
| Razorpay key ID + secret | India-friendly payments |
C. SMS / WhatsApp
| Option | Notes |
|---|---|
| Enable SMS (Twilio) | sms_enabled |
| Twilio Account SID / Auth Token / From | Credentials |
| Enable WhatsApp | Meta Cloud API |
| WhatsApp token + phone number ID | Cloud API |
BS_Settings::sanitize() — strings, emails, integers,
and gateway arrays are cleaned before storage.
24. Booking flow (how a booking is created)
/availability).
/price).
BS_Booking::create → status from booking mode + settings.
Creating a booking from admin
Booking System → Bookings → Add: item_type, item_id, check-in/out, adults/children, status, customer fields.
25. Availability & pricing
Availability
- Table:
wp_bs_availability(plus booking date ranges that block inventory) - Day items (tours/activities) vs stay items (rooms/villas): helpers
bs_is_day_item(),bs_is_stay_item() - Calendar UI: shortcode
[availability_calendar]and admin Calendar
Pricing rules
Booking System → Pricing — seasonal / weekend / length-of-stay style rules via BS_Pricing::save_rule.
Listing base price comes from theme meta (for example room base price).
26. Payments & gateways
- Base gateway is filterable: Pay at Hotel (offline)
- Additional gateways register via the
bs_payment_gatewaysfilter /BS_Gateways/ online checkout class - Enable them in Settings and add API keys
- Admin Payments: record manual payments
- Invoices:
BS_Invoicetemplates
27. Coupons, taxes, services
Coupons
Create a code, discount type/amount, usage limits, and validity. Applied at checkout.
Taxes
Tax rates table — applied to the pricing total.
Services (add-ons)
Breakfast, airport pickup, and similar. Attached to bookings; stored in booking_services.
28. Notifications
Booking System → Notifications — edit templates (BS_Notification::update_template).
- Email on new booking / confirmation / cancellation
- Optional SMS (Twilio) and WhatsApp when enabled in Settings
- Reminders via cron using
reminder_days_before
Tip: use WP Mail SMTP or Mailhog locally, otherwise emails may appear to “disappear”.
29. Wishlist, reviews, map search
Wishlist
- Class:
BS_Wishlist— logged-in user meta + guest cookie - AJAX heart toggle on grids / singles
- Shortcode:
[booking_wishlist]
Reviews
- Table:
wp_bs_reviews - Shortcode:
[booking_reviews](usually in item context) - Admin: Booking System → Reviews
- Setting: auto-approve on/off
Map search
- Leaflet-based UI
- Shortcode:
[booking_map] - Requires lat/lng on listings
- Homepage section
map-searchand Map page template
30. iCal, housekeeping, reports
iCal Sync
Import an external calendar URL for a given item_type + item_id. Optionally save the feed for re-import.
Housekeeping
Post-checkout cleaning / room readiness operations for hotels.
Reports
Occupancy / revenue views plus CSV export.
31. Plugin shortcodes (complete list)
| Shortcode | Purpose | Key attributes |
|---|---|---|
[booking_search] | Search form (+ results) | type, design, show_results |
[availability_search] | Alias of search | same |
[booking_form] | Main book widget | item_type, item_id, layout=checkout|widget|popup|sticky|sidebar |
[availability_calendar] | Month calendar | item_type, item_id, month |
[room_list] / [room_grid] | Rooms grid | limit, columns… |
[villa_list] / [tour_list] | Villa / tour grids | |
[activity_list] / [car_list] / [package_list] | Traveler grids | |
[booking_items] | Generic items | type |
[room_single] etc. | Single card/block | id |
[booking_cart] | Cart | — |
[booking_checkout] | Checkout | — |
[booking_confirmation] | Thank you | — |
[my_bookings] | Guest portal | — |
[booking_wishlist] | Wishlist page | — |
[booking_reviews] | Reviews | item context |
[booking_map] | Map search | — |
[booking_summary] / price aliases | Totals | — |
Example page content
[booking_checkout] [booking_confirmation] [my_bookings] [booking_map] [booking_wishlist]
32. REST API
Namespace: booking-system/v1
| Method | Route | Use |
|---|---|---|
| POST | /wp-json/booking-system/v1/availability | Check dates |
| POST | /wp-json/booking-system/v1/price | Quote total |
| POST | /wp-json/booking-system/v1/bookings | Create booking |
| GET | /wp-json/booking-system/v1/items/{type} | List items |
| GET | /wp-json/booking-system/v1/items/{type}/{id} | Single item |
Local example: http://localhost/test/wp-json/booking-system/v1/items/room
33. Database tables
Prefix is usually wp_bs_ (via bs_table()).
rooms,villas,tours(legacy/plugin mirrors if used)customersbookings,booking_itemsavailabilitypricing_rulespayments
coupons,coupon_usageservices,booking_servicestaxesnotificationstour_datesreviews
34. WooCommerce integration
BS_WooCommerce::init — if WooCommerce is active, gateways / checkout bridging can be filtered in.
- Optional — WooCommerce is not required for core theme booking
- Test that with WC active there is no conflict between WC cart and booking cart shortcodes
35. Staff Web Panel — complete guide
The Staff Web Panel is a front-end workspace for hotel and property staff. It uses normal WordPress login (username + password) but shows a dedicated booking UI instead of the full wp-admin dashboard. Staff see only the menus their role allows.
A. URLs and access
| URL | Purpose |
|---|---|
https://yoursite.com/staff-panel/ | Dashboard (default landing after login) |
…/staff-panel/login/ | Staff sign-in screen |
…/staff-panel/logout/ | Logs out and redirects to login |
…/staff-panel/bookings/ | Bookings list / add / edit |
…/staff-panel/calendar/ | Visual availability calendar |
…/staff-panel/customers/ | Guest records |
…/staff-panel/payments/ | Record manual payments |
…/staff-panel/housekeeping/ | Room readiness board |
…/staff-panel/pricing/ | Pricing rules |
…/staff-panel/settings/ | Global plugin settings |
…/staff-panel/reports/ | Revenue / occupancy + CSV export |
…/staff-panel/users/ | Create staff accounts (role-restricted) |
On subdirectory installs (e.g. http://localhost/test/) the path is
/test/staff-panel/. Pretty URLs require permalinks to be flushed once
(Settings → Permalinks → Save).
Fallback query-string URL (if rewrites fail):
?bs_staff_panel=1&bs_staff_page=login
B. Who can log in?
Only users with staff panel access are allowed past the login screen:
- Administrator — full access
- Booking Manager (
bs_manager) - Front Desk (
bs_frontdesk) - Housekeeper (
bs_housekeeper)
C. Roles, capabilities & menu access
| Role | Panel menus visible | Can create users? |
|---|---|---|
| Administrator | All 10 menus (Dashboard, Bookings, Calendar, Customers, Payments, Housekeeping, Pricing, Settings, Reports, Staff Users) | Yes — all roles including Administrator |
| Booking Manager | Same as Administrator (all panel screens) | Yes — Front Desk & Housekeeper only |
| Front Desk | Dashboard, Bookings, Calendar, Customers, Payments, Reports | No |
| Housekeeper | Dashboard, Bookings (view), Calendar, Housekeeping | No |
Capability reference
| Capability | Used for |
|---|---|
bs_manage_bookings | Bookings, calendar |
bs_manage_customers | Customers screen |
bs_manage_payments | Payments screen |
bs_manage_housekeeping | Housekeeping board |
bs_manage_pricing | Pricing rules |
bs_manage_settings | Settings screen |
bs_view_reports | Reports + CSV export |
create_users / edit_users | Staff Users screen (Manager + Admin) |
D. Login flow
1. Open login
Visit /staff-panel/login/ or click the staff panel link from the theme admin notice when Booking System is active.
2. Enter WordPress credentials
Username or email + password. Optional Remember me sets a persistent cookie.
3. Role check
Plugin verifies the user has bs_manage_bookings, bs_manage_housekeeping, or manage_options.
4. Redirect to dashboard
Successful login lands on /staff-panel/. Failed login shows an error on the login form.
E. Panel screens (what each menu does)
| Menu | Function | Key actions |
|---|---|---|
| Dashboard | KPI overview | Today’s bookings, pending/confirmed counts, revenue, recent bookings table, most-booked items |
| Bookings | Reservation management | Search/filter, add new booking, edit status, view totals and payment state |
| Calendar | Visual occupancy | Month view by room/villa/tour; click busy cells to cycle status (pending → confirmed → checked_in) |
| Customers | Guest CRM | Search guests by name/email; view booking history per customer |
| Payments | Payment ledger | Record manual/offline payments against a booking (pay-at-hotel, bank, etc.) |
| Housekeeping | Room status board | Set per-room status: Clean, Dirty, In progress, Inspected, Maintenance |
| Pricing | Dynamic rules | Seasonal/weekend pricing rules (same as wp-admin Pricing) |
| Settings | Global options | Currency, gateways, emails, checkout pages — same fields as §23 |
| Reports | Analytics | Daily revenue chart, occupancy by month, top items, export bookings CSV |
| Staff Users | Team accounts | Create username/email/password + assign role; lists existing staff |
F. Creating staff users
Path: Staff Panel → Staff Users (or wp-admin user screen for advanced edits).
- Fill Username, Email, and Password (required).
- Optional: first name / last name.
- Select Role from the dropdown (limited by your own role — see table in §35-C).
- Click Create user. The new user signs in at
/staff-panel/login/with the same credentials.
G. Design & UX (v1.4.0)
- Matches Booking Pro linen / charcoal palette (§16)
- Fonts: Cormorant Garamond (headings) + Outfit (UI)
- Dark sidebar with SVG icons per menu item
- Sticky top bar: page title, “View site” link, user avatar
- Card-style KPIs, tables, and filter bars
- Mobile: slide-out sidebar + hamburger menu
- WordPress admin bar is hidden inside the panel
- Site custom logo (Customizer) appears in sidebar and login if set
H. Technical implementation
| Item | Location |
|---|---|
| Router / login / roles | booking-system/includes/class-staff-panel.php |
| Capabilities & roles | booking-system/includes/class-capabilities.php |
| Panel shell template | booking-system/staff-panel/layout.php |
| Login template | booking-system/staff-panel/login.php |
| User management view | booking-system/staff-panel/users.php |
| Inner screens | Reuses booking-system/admin/*/view.php (same data as wp-admin) |
| Styles | assets/css/staff-panel.css, assets/css/admin.css |
| Mobile JS | assets/js/staff-panel.js |
| URL helpers | bs_is_staff_panel(), bs_booking_admin_url() in includes/functions.php |
| Rewrite rules | staff-panel/, staff-panel/{page}/ registered on init |
| Theme notice link | booking-pro/inc/plugin-notice.php — links to panel when plugin active |
Form posts (save booking, record payment, update settings, etc.) are handled by the same
BS_Admin::handle_actions() logic as wp-admin. Data is stored in the same
wp_bs_* tables — there is no separate database for the panel.
I. Staff panel vs wp-admin
Use Staff Panel for
- Front desk daily operations
- Housekeeping status updates
- Manager on-site tablet / phone
- Staff who should not see WordPress menus
Use wp-admin for
- Plugin/theme updates
- Coupons, taxes, iCal, notifications
- Catalog editing (Rooms/Villas/Tours CPTs)
- Demo setup, Customizer, user password resets
J. QA checklist (staff panel)
/staff-panel/login/loads branded login page- Admin login → dashboard KPIs and recent bookings show
- Each menu link opens without PHP fatal error
- Front Desk user sees only allowed menus (no Settings/Users)
- Housekeeper sees Housekeeping + limited Bookings/Calendar
- Filter forms on Bookings/Calendar/Reports stay on panel URLs (not wp-admin)
- Create Front Desk user as Manager → new user can log in
- Logout clears session and returns to login
- Mobile: sidebar toggle opens/closes; tables scroll horizontally if needed
- Subdirectory install (
/test/) resolves/test/staff-panel/correctly
36. Required / recommended pages
| Page | Template / shortcode | Settings link |
|---|---|---|
| Home | Front Page (sections) | Reading settings |
| Rooms / Villas / Tours | Page templates or native archives /rooms/ … | v1.4.0 archive templates |
| Activities / Cars / Bundles | Traveler templates | auto-seed |
| Map & Wishlist | Map template | auto-seed |
| Booking / Search | Booking template | — |
| Checkout | [booking_checkout] | Settings → Checkout page |
| Confirmation | [booking_confirmation] | Settings → Confirmation page |
| My Bookings | [my_bookings] | optional account_page |
| Staff Panel | Auto URL /staff-panel/ (no WP page needed) | Plugin rewrite — see §35 |
| Contact / About / FAQ | Inner templates | — |
38. Full testing checklist
Print or tick during QA:
A. Install smoke
- Plugin activates without a PHP fatal error
- Theme activates without a PHP fatal error
- Admin shows plugin-required warning when Booking System is deactivated
readme.txtandscreenshot.pngexist in the theme folderwp_bs_bookingstable exists in phpMyAdmin- Admin menus: Booking System + Rooms are visible
- Front homepage loads CSS correctly
B. Demo & pages
- Setup Demo installs without error
- Static homepage shows sections
- Rooms / Activities / Map pages open
- Native archives
/rooms/,/villas/,/tours/show card grids (v1.4.0) 404.phpandsearch.phprender branded layouts- Footer does not show default Archives / Categories widgets after demo install
- Primary menu links work (no 404)
C. Catalog CRUD
- Add a Room with price, featured image, booking mode Instant
- Add Villa / Tour with lat/lng
- Add Activity with a dates list
- Add Car + Travel Bundle
- Single pages show gallery, price, book form, sticky bar
D. Customizer
- Disable a homepage section → it disappears
- Reorder sections → order changes
- Switch design variant → layout changes, content stays the same
- Single Catalog: disable Reviews → reviews hide
- Innerpage colors apply on the Rooms listing
E. Booking happy path
- Search available dates → results appear
- Book a room with Pay at Hotel → confirmation
- Admin → Bookings shows the new row with the correct total
- Same dates are blocked / inventory is respected
- Request-to-book listing → pending/request status
- Instant book → confirmed (per settings)
F. Traveler
- Activity booking for a listed date
- Car day price calculates correctly
- Bundle/package books successfully
- Wishlist heart toggles (logged out + logged in)
- Submit a review → appears (or awaits approval)
- Map pins show for items with lat/lng
G. Commerce extras
- Coupon reduces the total
- Tax adds to the total
- Extra service is selectable
- Payment is recorded on the Payments screen
H. Ops
- Calendar shows the booking
- Reports load / CSV export works
- Notification email is received (or logged)
- iCal import marks blocked dates (if a feed is available)
- Mobile: sticky book bar and forms are usable
J. Staff Web Panel
/staff-panel/login/— branded login loads- Administrator — all 10 panel menus open without error
- Booking Manager — full panel + can create Front Desk / Housekeeper users
- Front Desk — Dashboard, Bookings, Calendar, Customers, Payments, Reports only
- Housekeeper — Dashboard, Bookings, Calendar, Housekeeping only
- Bookings filter + calendar month picker submit to panel URLs
- Record a manual payment from Payments screen
- Update a housekeeping room status
- Logout works; non-staff WP user is rejected at login
K. REST smoke
- GET items/room returns JSON
- POST availability with a valid body returns available true/false
39. Troubleshooting
| Problem | Likely fix |
|---|---|
| Booking form missing | Activate the plugin; check the shortcode; Single Catalog → Booking enabled |
| 404 on /rooms/ | Flush permalinks; confirm the CPT is registered; v1.4.0 adds archive-bpro_room.php |
| Archives look unstyled | Clear cache; confirm section CSS enqueued on archive (rooms/villas/tours) |
| Footer shows Archives / Categories | Appearance → Widgets → clear footer-1; or reinstall demo (v1.4.0 clears widgets) |
| Yellow admin warning about plugin | Expected when Booking System is inactive — activate the plugin |
| Offers / Packages empty on homepage | Add content under Offers / Packages CPTs, or run demo reinstall |
| Homepage empty sections | Enable sections in Customizer; install demo; set a static front page |
| Map empty | Add lat/lng to listings; confirm Leaflet loads; visit the Map page |
| Price shows 0 | Set base_price meta on the listing |
| Always pending | Check booking_mode + default/instant status settings |
| Emails not sending | Configure SMTP; check admin_email |
| Gateway error | Use sandbox keys; HTTPS; enable the gateway checkbox |
| Package vs Bundle confusion | Book bpro_bundle; marketing content is bpro_package |
| White screen | Enable WP_DEBUG logging; use PHP 7.4+; check for a missing require |
| Staff panel 404 | Settings → Permalinks → Save; confirm plugin active; try ?bs_staff_panel=1&bs_staff_page=dashboard |
| Panel login “no access” | User needs role Administrator, Booking Manager, Front Desk, or Housekeeper |
| Panel page fatal error | Usually missing wp-admin template helpers — update plugin to v1.4.0+; clear object cache |
| Filter redirects to wp-admin | Update plugin — panel forms must use bs_booking_admin_url() |
| Cannot create staff user | Only Admin/Manager see Staff Users; Manager can only assign Front Desk or Housekeeper |
40. Changelog
Plugin v1.4.0 — Staff Web Panel
- Front-end Staff Web Panel at
/staff-panel/with WordPress login - Custom roles: Booking Manager, Front Desk, Housekeeper (
BS_Capabilities) - Role-based sidebar menus — 10 screens (Dashboard through Staff Users)
- Staff user creation inside panel (Admin: all roles; Manager: Front Desk + Housekeeper)
- Premium UI matching Booking Pro linen/charcoal design system
- Mobile sidebar, top bar, SVG nav icons, Google fonts (Cormorant + Outfit)
- Reuses wp-admin booking views on front-end; shared
BS_Admin::handle_actions() - Helpers:
bs_is_staff_panel(),bs_booking_admin_url() - Subdirectory install support + pretty permalink rewrite rules
Theme v1.4.0 (marketplace release)
- Unified product branding as Booking Pro (removed TravelCraft naming)
- Added
readme.txt,screenshot.png, version sync viaBPRO_VERSION - Added
404.phpandsearch.php - Added
archive-bpro_room.php,archive-bpro_villa.php,archive-bpro_tour.php - Added
template-parts/catalog/archive-grid.phpshared archive layout - Added
inc/plugin-notice.php— admin warning when Booking System is inactive - Demo setup clears default
footer-1widgets; seeds offers/packages when missing - Default linen / charcoal color palette documented in §16
- Catalog single CSS now loads for activity, car, and bundle singles too
- Booking search + map section layout fixes (panel wrapper, hero nav z-index)
Theme v1.3.x
- Homepage Section Manager, 100+ demo presets
- Innerpage + Single Catalog Customizer
- One-click demo under Appearance → Setup Demo
- Aman-inspired design refresh (header, footer, section-01 styles)
41. FAQ
What is the Staff Web Panel?
A front-end booking workspace at /staff-panel/ for hotel staff. It uses WordPress login but hides wp-admin. See §35 for roles, URLs, and setup.
How do I give my receptionist access without wp-admin?
Create a Front Desk user under Staff Panel → Staff Users (or wp-admin Users). They log in at /staff-panel/login/.
Can housekeeping staff change bookings?
Housekeepers see Dashboard, Bookings (view), Calendar, and Housekeeping. They update room status on the housekeeping board; full booking edits require Front Desk or Manager roles.
How do I edit layouts?
Use the WordPress Customizer — Homepage Section Manager, Innerpage Manager, and Single Catalog Manager. No separate page builder is required.
Can the theme be sold without the plugin?
You can sell design alone, but booking features require the plugin. Packaging both together is recommended.
Will the plugin work with another theme?
Yes, via shortcodes / REST. Catalog CPTs are provided by Booking Pro; another theme needs its own catalog wiring.
How do I remove demo content?
Trash demo pages/posts; reset Customizer options manually; the flag bpro_demo_installed lives in the options table.
What files are required to sell on a marketplace?
Minimum: theme folder with style.css, readme.txt, screenshot.png, plus the Booking System plugin bundle and this documentation. See §7.
Where is this documentation file?
Path:
wp-content/themes/booking-pro/docs/BOOKING-PRO-COMPLETE-GUIDE.html
Open it directly in a browser (double-click) or serve it from your local URL.