A modern event, conference, and speaking theme for WordPress.
Built for WordCamp organizers, conference websites, and public speakers. Speaker profiles, session schedules, talk archives, sponsor tiers, and venue information handled natively — without page builders.
- WordCamp organizers who need a complete event site on day one
- Conference teams building for developer, design, or community events
- Public speakers who want a personal site showcasing talks and appearances
- Community groups running recurring events like meetups or online conferences
Podium came from the real pain of running WordCamps with generic themes. Conference attendees check schedules on mobile on bad wifi during the event. Speakers deserve proper profile pages. Sponsors deserve tiered display. None of this should require a page builder.
- Custom post types for Speakers, Sessions, and Talks
- Session taxonomy: Tracks (Development, Design, Business, Community, and more)
- Session taxonomy: Session Types (Keynote, Workshop, Talk, Panel, Lightning Talk)
- Multi-day schedule with time slot display and track filtering
- Schedule readable without JavaScript (progressive enhancement)
- Speaker profile pages with photo, bio, social links, and talk listing
- Sponsor tier pages: Gold, Silver, Bronze, Community
- Venue page with address and map link
- Call for Speakers (CFP) page with open/closed status display
- Code of Conduct page template
- Lighthouse Performance score target: 95+
- LCP (Largest Contentful Paint) under 2 seconds
- CLS (Cumulative Layout Shift) under 0.1
- TBT (Total Blocking Time) under 200ms
- Self-hosted variable fonts (no Google Fonts API calls)
- JavaScript deferred, loaded in footer
- No external JavaScript libraries
- No jQuery
- Speaker photos lazy loaded
- Sponsor logos lazy loaded
- CSS under 25KB unminified
- JavaScript under 15KB unminified total
- Built entirely on the block editor
- 14 pre-built block patterns for common event layouts
- 9 template parts (header, footer, speaker card, session card, sponsor tier, and more)
- 19 block templates including all custom post type archives and singles
- Style variations support
- Full theme.json configuration
- Event schema (schema.org) on homepage and event pages
- Person schema on speaker profile pages
- BreadcrumbList on all interior pages
- WebSite schema with SearchAction on homepage
- Open Graph meta tags (og:title, og:description, og:image, og:type, og:url)
- Twitter Card meta tags
- All schema via JSON-LD in wp_head
- WCAG 2.1 AA compliance target
- Skip navigation link
- ARIA landmarks and labels throughout
- Keyboard navigation for mobile menu, dropdowns, day tabs, filter buttons
- Focus trap in open mobile menu
- Accessible countdown timer (announced to screen readers once per minute)
- Color contrast compliant palette
- Reduced motion support
- Event name, tagline, start/end dates, location, format
- Ticket URL and price
- CFP status (open/closed), deadline, submission URL
- Header: show/hide date, ticket button text, sticky toggle
- Colours: primary accent, secondary accent, session type colours
- Footer: tagline, WordPress attribution toggle
- Social links: Twitter, Mastodon, GitHub, YouTube
- Event hashtag
- Schema: organization name and logo
- Download the repository as a ZIP file
- In WordPress admin: Appearance → Themes → Add New → Upload Theme
- Upload the ZIP and click Activate
- Copy the
podiumfolder to/wp-content/themes/podium/ - In WordPress admin: Appearance → Themes
- Click Activate under Podium
- WordPress 6.3 or later
- PHP 8.0 or later
- Tested up to WordPress 6.8
| Feature | Status |
|---|---|
| Custom Logo | ✓ |
| Custom Menu | ✓ |
| Featured Images | ✓ |
| Full Width Template | ✓ |
| RTL Language Support | ✓ |
| Translation Ready | ✓ |
| Block Patterns | ✓ |
| Full Site Editing | ✓ |
| Wide Blocks | ✓ |
| Accessibility Ready | ✓ |
| Editor Style | ✓ |
| Dark Color Scheme | ✓ (style variation) |
| Light Color Scheme | ✓ (default) |
| Sticky Post | ✓ |
| Theme Options | ✓ (via Customizer) |
Speaker profiles for event presenters.
Meta Fields:
podium_speaker_title— Job title or rolepodium_speaker_organization— Company or affiliationpodium_speaker_website— Personal website URLpodium_speaker_twitter— Twitter/X handle (without @)podium_speaker_github— GitHub usernamepodium_speaker_mastodon— Mastodon handle (@user@instance)podium_speaker_linkedin— LinkedIn profile URLpodium_speaker_bio_short— Short bio under 150 characterspodium_speaker_country— Country of origin
Conference sessions and talks on the schedule.
Meta Fields:
podium_session_date— Session date (YYYY-MM-DD)podium_session_start_time— Start time (HH:MM, 24h)podium_session_end_time— End time (HH:MM, 24h)podium_session_room— Room or location namepodium_session_speaker_ids— JSON array of speaker post IDspodium_session_slides_url— Link to slide deckpodium_session_video_url— Link to recordingpodium_session_is_keynote— Boolean keynote flagpodium_session_capacity— Seating capacitypodium_session_language— Session language
podium_track— Organizes sessions by topic track (Development, Design, Business, Community, Beginner, Advanced)podium_session_type— Classifies session format (Keynote, Workshop, Talk, Panel, Lightning Talk, Break)
podium/
├── assets/
│ ├── css/
│ │ ├── style.css Main theme CSS (BEM, custom properties)
│ │ ├── schedule.css Schedule page styles
│ │ ├── editor.css Block editor styles
│ │ └── print.css Print stylesheet
│ ├── fonts/ Self-hosted variable fonts (woff2)
│ ├── images/ Theme images (none bundled)
│ └── js/
│ ├── navigation.js Mobile menu, sticky header, keyboard nav
│ ├── schedule.js Schedule filtering (progressive enhancement)
│ └── countdown.js Accessible event countdown
├── docs/ Full documentation
├── inc/
│ ├── accessibility/ WCAG 2.1 AA enhancements
│ ├── customizer/ WordPress Customizer settings
│ ├── patterns/ Block pattern registration
│ ├── performance/ Performance optimizations
│ ├── post-types/ Custom post type definitions
│ ├── schema/ JSON-LD structured data
│ ├── setup/ Core theme setup (support, enqueue, menus)
│ ├── taxonomies/ Custom taxonomy definitions
│ └── template-tags/ Template helper functions
├── languages/ Translation files (.pot)
├── parts/ FSE template parts (HTML)
├── patterns/ Block patterns (PHP)
├── templates/ FSE block templates (HTML)
├── CHANGELOG.md
├── README.md
├── functions.php
├── screenshot.png
├── style.css WordPress theme header
└── theme.json Full Site Editing configuration
Podium ships with style variations in /styles/:
| Variation | Description |
|---|---|
| Default | Warm off-white background, orange accent |
| Dark | Dark slate background for evening events |
| High Contrast | Maximum contrast for accessibility-first deployments |
Apply a variation via Appearance → Editor → Styles.
See docs/customization.md for the complete customization guide.
Quick reference:
- Colours: Appearance → Customize → Podium Colours
- Event Info: Appearance → Customize → Event Information
- Social Links: Appearance → Customize → Social & Community
- Block Patterns: Available in the editor pattern inserter under "Podium"
- Child Theme: All templates can be overridden in a child theme
Accessibility in Podium is a community value, not a compliance checkbox.
The WordPress community includes attendees and speakers with visual, motor, cognitive, and hearing differences. The schedule must work with a screen reader. The venue page must work with keyboard-only navigation. The speaker profiles must have meaningful alt text.
See docs/accessibility.md for full WCAG 2.1 AA compliance details.
Conference sites are used on-site, on conference wifi, on mobile phones. They must load fast under the worst conditions.
| Metric | Target |
|---|---|
| Lighthouse Performance | 95+ |
| Largest Contentful Paint | < 2 seconds |
| Cumulative Layout Shift | < 0.1 |
| Total Blocking Time | < 200ms |
| CSS (unminified) | < 25KB |
| JavaScript (unminified) | < 15KB total |
See docs/performance.md for the full strategy.
- Activate Podium
- Configure event details: Appearance → Customize → Event Information
- Create the Speaker, Session, Schedule, Sponsors, Venue, CFP, and Code of Conduct pages
- Add speaker profiles via Speakers → Add New
- Add sessions via Sessions → Add New with date, time, room, and speaker
- Apply the appropriate block pattern to each page
- Configure navigation menus: Appearance → Menus (or Site Editor)
- Set your accent colour: Appearance → Customize → Podium Colours
See docs/event-guide.md for the complete step-by-step guide.
See docs/contribution-guide.md.
Pull requests welcome. Please follow WordPress Coding Standards for PHP, and JSDoc conventions for JavaScript.
GNU General Public License v2 or later
http://www.gnu.org/licenses/gpl-2.0.html
Kunal Pareek https://kunalpareek.in