Back to Portfolio
Case Study · Custom Plugin

Community Bookings.

A custom WordPress plugin powering multi-date class bookings, Stripe payments, a prepaid pass system and member portal for Ōtari Raranga — a Wellington-based Māori weaving organisation running weekly raranga classes across multiple skill levels and venues.

Client
Ōtari Raranga
Type
WP Plugin · Bookings & Events
Year
2025 — present
Role
Build & Deploy
otariraranga.org.nz/events
Ōtari Raranga event detail page — multi-image gallery, dual-tab info, booking CTA
01 / Overview

Built for real classes, not generic events.

Off-the-shelf event plugins assume you sell tickets to one-off events. Ōtari Raranga runs term-based weaving classes — same group, multiple sessions, different skill streams running in parallel, prepaid passes, and tikanga-aware information that needs to sit beside the practical class info.

Community Bookings is a from-scratch WordPress plugin shaped around exactly that. Each event holds multiple session dates with their own capacity, traffic-light availability, and dual-tabbed General / Important information. Customers buy passes once and book against them; the plugin tracks remaining sessions, sends confirmations, and gives admins TinyMCE editors that strip away every legacy inline style they paste in.

02 / Features

What's inside.

Eight feature areas covering everything from per-session capacity to TinyMCE content normalisation.

// 01

Multi-Date Booking System

  • Per-session capacity tracking — one event, many session dates, individual spot counts
  • Traffic-light availability badges: Fully booked / X spots left / X spots available
  • Custom event flagging — mark sessions as "Special" with distinct visual treatment
  • Automated confirmation workflow with confirmation pages and email notifications
// 02

Stripe & Pass System

  • Stripe Checkout — fully PCI-compliant, no card data ever touches the site
  • Test mode toggle so admins can dry-run a term before going live
  • Single-session, multi-pack and unlimited pass types — auto-deduct on booking
  • Receipt and confirmation emails branded to the org
// 03

Member Account Portal

  • My Account dashboard — past & upcoming bookings, remaining passes, full history
  • Self-service cancellation and rebooking
  • Role-aware UI — different states for guests, members with passes, members without passes
// 04

Front-End Display

  • Responsive event grid — 3 columns desktop, 2 tablet, 1 mobile with equal-height cards
  • Multi-image carousel per event with arrows and indicator dots
  • Configurable hero banner with title, subtitle and background image (per page or site-wide)
  • Side-by-side General Information & Important Information tabbed display
  • Dynamic full-width breakout — JS-powered layout that overcomes restrictive theme content columns
// 05

Admin / Editor Experience

  • Side-by-side dual TinyMCE editors for General & Important info, identical formatting
  • Aggressive content normalisation — strips legacy inline styles, font tags, color attributes on save
  • Custom post type with WordPress-native UI — feels exactly like editing a standard post
  • Event taxonomy / skill levels for filtering and organisation
  • One-click Light / Dark display theme toggle
  • Multi-date scheduler — manage every session from a single screen
// 06

Theme-Aware Styling

  • Plugin elements automatically respect light/dark mode
  • Cross-theme verified — works with Twenty Seventeen, Kadence and other major free themes
  • Site-wide or plugin-only background and text colour controls
// 07

Security & Hardening

  • Nonce protection on all forms and AJAX endpoints
  • Capability checks for every admin action
  • Sanitised inputs and escaped outputs throughout
  • Honours WordPress's permission system end-to-end
// 08

Shortcodes

  • [cb_events] — full events listing grid
  • [cb_event_detail] — single event display
  • [cb_buy_passes] — pass purchase interface
  • [cb_checkout] — Stripe checkout flow
  • [cb_confirmation] — post-payment confirmation
  • [cb_hero] — reusable hero banner
03 / Under the hood

Built on WordPress.

// Backend

  • WordPress Plugin API (PHP)
  • Custom MySQL tables for booking records
  • Custom post type with proper meta fields
  • Backward-compatible meta migration on save

// Frontend

  • JavaScript / jQuery for the booking UI
  • AJAX-powered booking interactions — no page reloads
  • Custom CSS / SVG, fully theme-aware
  • TinyMCE editor integration for admins

// Integrations

  • Stripe API (Checkout + webhooks)
  • WordPress permissions & user system
  • Email delivery via WP mail / SMTP plugins
  • Hostinger-optimised — runs on shared hosting

// Stack at a glance

PHP WordPress Plugin API MySQL Custom Tables JavaScript jQuery AJAX Stripe API TinyMCE Custom CSS / SVG Hostinger
Got a class, course or community?

Need a booking system shaped around how you actually run things?

Off-the-shelf plugins won't fit forever. We build custom WordPress plugins that match the exact way your organisation operates — without the SaaS fees.