Karuna Booking Search self-updates
WordPress availability-search widget for karunasiargao.com — branded calendar that searches bookings.karunasiargao.com
by Karuna Siargao · github.com/ledorofficial/karuna-booking-search · 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/ledorofficial/karuna-booking-search/archive/refs/heads/main.zipShips its own WordPress updater (Plugin Update Checker), so new versions show up under Dashboard → Updates.
A WordPress plugin for karunasiargao.com — a branded availability search that replaces the Smoobu embed. A compact one-month calendar (live nightly prices, sold-out nights greyed out) that sends the visitor to:
https://bookings.karunasiargao.com/?arrival=YYYY-MM-DD&departure=YYYY-MM-DD&guests=N#rooms
Install
- Download the latest zip from Releases (or Code → Download
ZIP and rename the folder to
karuna-booking-search). - WP Admin → Plugins → Add New → Upload Plugin → the zip → Install → Activate.
- Place it:
- Shortcode:
[karuna_booking_search]— in Elementor use a Shortcode element (never a Text / Heading / HTML widget) - Widget: Appearance → Widgets → Karuna Booking Search
- Shortcode:
Updates
The plugin checks this repo's Releases. When a release has a higher version than what's installed, WordPress shows the normal update available notice in Plugins and updates with one click — no re-upload. (WordPress checks automatically every ~12h; force it from Dashboard → Updates → Check again.)
Shipping an update = bump the Version: header in karuna-booking-search.php,
push, and publish a GitHub release tagged vX.Y.Z.
Uses Plugin Update Checker
(bundled in plugin-update-checker/). Works token-free while this repo is public.
Shortcode attributes
| Attribute | Default | Notes |
|---|---|---|
base |
https://bookings.karunasiargao.com/ |
Where the search submits. |
target |
_self |
_blank opens results in a new tab. |
max_guests |
16 |
Ceiling for Adults + Children in the Guests picker. |
prices |
on |
off hides the per-night prices. |
layout |
stacked |
stacked = teal card; inline = light wide row. |
button |
Search |
Submit button label. |
[karuna_booking_search max_guests="4"] Skygazer (sleeps 4)
[karuna_booking_search prices="off"] calendar without prices
[karuna_booking_search layout="inline" button="Check availability"] homepage row
Layouts: stacked is the compact teal card for a sidebar (like the Smoobu
widget). inline is a full-width white row — Arrival · Departure · Guests ·
button — for a homepage hero on a light background; it wraps to two columns
below 640px.
Backend dependency
The price calendar reads GET /api/calendar on the booking engine — the
lowest-nightly-rate map, as JSON, with an Access-Control-Allow-Origin header
for karunasiargao.com. If that endpoint or flatpickr's CDN is unreachable the
widget falls back to plain native date fields, so it always works.
That endpoint lives in the booking-engine repo (bookings.karunasiargao.com),
route GET /api/calendar, origins controlled by CORS_ORIGINS.
No-plugin alternative
elementor-html-widget.html is the whole widget as one paste-in block (markup +
`