Curtain Raiser for Inaugural Ceremony

Plugin Banner

Curtain Raiser for Inaugural Ceremony

by Abhishek Deshpande

Download
Description

Curtain Raiser for Inaugural Ceremony adds a curtain-raiser feature to your WordPress website.
Perfect for virtual inauguration ceremonies — especially common for NGOs and Government websites in India.

What’s new in 1.6.0

  • ✅ Remote Control — create an attendee session from Tools > Curtain Remote
  • ✅ Attendee Link — share ?curtain_ceremony=true&wcr_token=TOKEN so everyone loads the curtain
  • ✅ Open Curtain button — opens the curtain for all live attendees within ~2 seconds
  • ✅ Close Curtain button — closes the curtain remotely so you can reset between takes
  • ✅ REST polling — JS polls GET /wp-json/wcr/v1/status every 2 s (zero UX lag)
  • ✅ Secure REST endpoints — manage_options + nonce required to open or close remotely
  • ✅ Session duration options — 30 min, 1 h, 4 h, or 24 h with auto-expiry via WP transients
  • ✅ WP-CLI — wp curtain-raiser status | preview-url | reset (v1.5)
  • ✅ Developer hooks — PHP action/filter hooks + wcr:ready / wcr:open / wcr:close DOM events (v1.5)
  • ✅ Gradient theme presets — Deep Velvet, Royal Blue, Forest Green, Midnight, Gold, Satin Rose (v1.4)
  • ✅ Countdown timer — auto-opens curtain at a configurable date/time (v1.4)
  • ✅ ARIA dialog wrapper, focus trap, live region — full keyboard & screen-reader support (v1.3)

Features

  • Easy URL-based activation (?curtain_ceremony=true)
  • Customisable curtain colour, gradient theme, or image
  • Custom rope image support
  • Adjustable animation speed (200–5000 ms)
  • Countdown timer — auto-reveal at a scheduled date/time
  • Remote Control — open or close the curtain for all live viewers simultaneously (Tools > Curtain Remote)
  • WP-CLI support — wp curtain-raiser status | preview-url | reset
  • Developer API — PHP hooks/filters + DOM custom events (wcr:ready, wcr:open, wcr:close)
  • Mobile-responsive with touch swipe-up support
  • Fully keyboard accessible (Enter, Space, Escape)
  • ARIA dialog, focus trap, screen-reader live region
  • Respects prefers-reduced-motion
  • Zero JavaScript dependencies — no jQuery, no external libraries
  • Clean uninstall removes all plugin data

To test the functionality, click here to spin up a new TasteWP instance.

  1. Upload the wp-curtain-raiser folder to /wp-content/plugins/
  2. Activate the plugin through the Plugins menu in WordPress
  3. Go to Settings > Curtain Raiser to configure colours and images
  4. Add ?curtain_ceremony=true to any page URL to trigger the curtain
  5. Share the URL with your guests!
  1. Adding the query parameter to the URL.

    Adding the query parameter to the URL.

  2. The curtain overlay on page load.

    The curtain overlay on page load.

  3. Appearance after the curtain opens.

    Appearance after the curtain opens.

How do I trigger the curtain?

After activating the plugin, append ?curtain_ceremony=true to any URL on your site.
Example: https://yourwebsite.com/?curtain_ceremony=true

Can I customise the curtain colour?

Yes! Since 1.0.0, go to Settings > Curtain Raiser and use the colour picker.
If you also set a curtain image, the image takes priority over the colour.

Can I use my own curtain or rope image?

Yes — go to Settings > Curtain Raiser and click Choose Image next to
“Curtain Image” or “Rope Image” to pick from your Media Library.

The curtains are covering the admin bar / conflicting with my theme.

Since 1.0.0 the curtains use position: fixed (previously absolute), which
should resolve most theme conflicts. If you still see issues, try adjusting the
z-index values in the plugin CSS or raise a support ticket.

I’ve activated the plugin but can’t see the curtains or the rope.

This is usually caused by:
1. Missing ?curtain_ceremony=true in the URL
2. CSS conflicts with other plugins (check z-index)
3. JavaScript conflicts (check browser console for errors)
4. Caching — clear browser and server cache after changing settings

Will this slow down my site?

No. The plugin only loads its CSS and JS when ?curtain_ceremony=true is present
in the URL. Normal page visits are completely unaffected.

How do I use the countdown timer?

Go to Settings > Curtain Raiser, enable “Countdown Timer”, and set a future
date/time. The countdown will display centred on the curtain and auto-open it
when the timer reaches zero.

How does the Remote Control work?

Go to Tools > Curtain Remote and click Create a Session. Copy the Attendee
Link and share it with your audience before the event starts. When you are ready,
click Open Curtain — everyone on the Attendee Link will see the curtain open
within ~2 seconds. You can also click Close Curtain to reset the curtain
remotely between takes. The session expires automatically after the duration you
chose (30 min, 1 h, 4 h, or 24 h).

How do I use WP-CLI?

Show current settings

wp curtain-raiser status

Get a quick preview URL

wp curtain-raiser preview-url

Reset all settings to defaults

wp curtain-raiser reset –yes

How do I use the developer events?

Listen on document for the wcr:open, wcr:close, and wcr:ready custom
events. Each event’s detail object includes a trigger property
('click', 'swipe', 'countdown', or 'remote').

document.addEventListener( 'wcr:open', function ( e ) {
    console.log( 'Curtain opened via:', e.detail.trigger );
} );

How do I remove all plugin data?

Deactivate and then delete the plugin from the Plugins screen. The uninstall
routine will remove the plugin’s settings and any active remote sessions from
your database automatically.

It does the job, in a royal style!

By Aravind Ajith (aravindajith) on May 5, 2022

I was pleasently surprised by this plugin. It was the last minute call from the client for something like this and as usual, after a casual search found this plugin and it saved me hours of trouble! Thank you!

1.6.0

  • New: Remote Control — Tools > Curtain Remote admin page for managing attendee sessions
  • New: Attendee Link (?curtain_ceremony=true&wcr_token=TOKEN) — share with your audience before the event
  • New: “Open Curtain” button — opens the curtain for all live attendees within ~2 seconds
  • New: “Close Curtain” button — closes the curtain remotely; token stays valid until session expires
  • New: GET /wp-json/wcr/v1/status REST endpoint — JS polls every 2 s (zero UX lag)
  • New: POST /wp-json/wcr/v1/trigger REST endpoint — open curtain; manage_options + nonce protected
  • New: POST /wp-json/wcr/v1/close REST endpoint — close curtain; manage_options + nonce protected
  • New: Cryptographically secure token generation via bin2hex(random_bytes(16))
  • New: Session duration options (30 min, 1 h, 4 h, 24 h) with auto-expiry via WP transients
  • New: wcr_active_token wp_option as lightweight pointer to the current session token
  • New: wcr:open DOM event dispatched with {trigger:'remote'} on remote open
  • New: wcr:close DOM event dispatched with {trigger:'remote'} on remote close
  • Improvement: Session token persists after curtain opens — Close Curtain remains usable for the full session duration
  • Improvement: Polished settings page — clearer field labels, Quick Start guide, Preview & Share section
  • Improvement: Uninstall routine cleans up session token data

1.5.0

  • New: WP-CLI command wp curtain-raiser status — tabular view of all plugin options
  • New: WP-CLI command wp curtain-raiser preview-url — outputs a ready-to-use curtain URL
  • New: WP-CLI command wp curtain-raiser reset [--yes] — restores factory defaults
  • New: PHP action wp_curtain_raiser_before_html — fires before curtain HTML output
  • New: PHP action wp_curtain_raiser_after_html — fires after curtain HTML output
  • New: PHP filter wp_curtain_raiser_options — override merged plugin options
  • New: PHP filter wp_curtain_raiser_panel_html — override/extend panel HTML per side
  • New: PHP filter wp_curtain_raiser_localized_data — override JS config object
  • New: DOM event wcr:ready — dispatched when JS initialises (detail: {options})
  • New: DOM event wcr:open — dispatched on curtain open (detail: {trigger})
  • New: DOM event wcr:close — dispatched on curtain close (detail: {trigger})
  • Trigger values: open — 'click', 'swipe', 'countdown', 'remote'; close — 'click', 'keyboard', 'remote'

1.4.0

  • New: Six built-in gradient theme presets — Deep Velvet, Royal Blue, Forest Green, Midnight Black, Gold, Satin Rose
  • New: Countdown timer — displays HH:MM:SS centred over the curtain; auto-opens at zero
  • New: curtain_theme setting — select box with 7 options (custom + 6 presets)
  • New: countdown_enabled setting — checkbox to activate the countdown
  • New: countdown_target setting — datetime-local picker for the reveal time
  • Improvement: Settings page hides custom colour/image fields when a gradient theme is selected
  • Improvement: Right-hand curtain panel uses scaleX(-1) so gradient faces inward on both sides

1.3.0

  • New: ARIA dialog wrapper (role="dialog" aria-modal="true") around all curtain elements
  • New: Focus trap — Tab/Shift+Tab cycles only within the overlay while curtain is closed
  • New: Focus management — opening moves focus to first focusable page element; closing returns focus to rope
  • New: aria-live="polite" live region announces “Curtain opened” / “Curtain closed” to screen readers
  • New: aria-expanded attribute on rope updated on open/close
  • New: aria-hidden="true" on curtain panel divs (decorative)
  • New: Touch swipe-up gesture now passes 'swipe' trigger to open()
  • New: Escape key now passes 'keyboard' trigger to close()

1.1.0

  • Removed jQuery and jquery-effects-core dependency entirely — plugin is now zero-dependency JS
  • Animation fully driven by CSS transitions and custom properties (–wcr-speed, –wcr-easing)
  • JS now only toggles CSS classes (.wp-curtain–open, .wp-curtain-rope–visible)
  • Script loaded with defer strategy (WP 6.3+ non-blocking script loading)
  • Bounce easing replaced with native CSS cubic-bezier — no easing library needed
  • Touch swipe-up gesture now works without jQuery UI touch extensions
  • Rope bounce effect preserved via CSS cubic-bezier(0.34, 1.56, 0.64, 1)
  • Tested up to WordPress 6.9.1

1.0.0

  • New: Curtain colour picker (finally delivers the “coming soon” promise from v0.1!)
  • New: Custom curtain image via Media Library
  • New: Custom rope image via Media Library
  • New: Animation speed slider (200–5000 ms)
  • New: Full Settings page under Settings > Curtain Raiser
  • New: Activation hook sets default options in DB
  • New: Uninstall hook removes plugin options cleanly
  • Refactor: Converted to class-based architecture (WP_Curtain_Raiser, WP_Curtain_Raiser_Settings)
  • Refactor: All constants moved to top-level defines in main file
  • Fix: Curtains now use position: fixed — works on all themes regardless of scroll
  • Fix: Removed unreliable is_admin() call from request filter context
  • Fix: Asset version now uses WP_CURTAIN_RAISER_VERSION constant throughout
  • Fix: Keyboard accessibility — Enter/Space opens curtain, Escape closes it
  • Fix: aria-expanded state updated on rope element
  • Fix: Images use object-fit: cover to prevent stretching
  • Improvement: Curtain can now be a solid colour (no image required)
  • Improvement: prefers-reduced-motion media query supported
  • Improvement: Additional responsive breakpoints (480 px)

0.7

  • Security patches
  • Responsive design improvements and touch support for mobile devices
  • Settings page with help section

0.6

  • Improved security measures
  • Added responsive design features

0.5

  • Miscellaneous bug fixes and performance improvements

0.4

  • Enhanced animation effects
  • User-friendly interface updates

0.3

  • Cleaned assets folder

0.2

  • Fixed query variable issue for static homepages

0.1

  • Initial release
Back to top