WordPress shortcodes plugin for CFP.DEV — display speakers, talks, schedules, and search results from your CFP.DEV instance directly on your WordPress site (Devoxx, VoxxedDays, and more).
- Speakers list — grid view with photos, sorted by last name or random; includes live search
- Speaker details — full profile with bio, social links (Twitter, LinkedIn, Bluesky, Mastodon), and async Flickr photo gallery
- Talk details — description, speakers, track, schedule info, YouTube embed, Spotify embed, related talks (semantic search), and star ratings
- Schedule — time-grid per day with room columns, current-time indicator, and favorite counts
- Talks by track / by session type — filterable tables with navigation tabs
- Search results — exact keyword matches + semantic similarity results via search.cfp.dev
- Offline mode — crawls all API endpoints and CDN images into a local snapshot; serves everything locally with zero external requests
- Caching — WordPress transient-based cache with configurable TTL (none, 1 h, 1 day, 1 week, 1 month)
- Theming — light / dark theme with optional user toggle
- Admin UI — API key, event settings, per-item cache management, offline crawl progress
| Requirement | Version |
|---|---|
| PHP | ≥ 8.0 |
| WordPress | ≥ 6.0 |
| CFP.DEV instance | any |
- Download the latest release ZIP from the Releases page.
- In WordPress admin go to Plugins → Add New → Upload Plugin and upload the ZIP.
- Activate the plugin.
cp -r cfp-dev-shortcodes /var/www/html/wp-content/plugins/Activate the plugin in Plugins → Installed Plugins.
- Go to Settings → CFP.DEV.
- Enter your CFP.DEV Key (the subdomain of your CFP.DEV instance, e.g.
dvbe23). - Enter the Event Name used in page titles and meta tags.
- Set the desired Cache Duration and Default Theme.
- Save. The plugin automatically creates all required WordPress pages on first activation.
When the plugin is activated it creates the following pages, each with the corresponding shortcode already inserted:
| Page slug | Shortcode |
|---|---|
/speakers |
[cfp_speakers] |
/speaker |
[cfp_speaker_details] |
/talk |
[cfp_talk_details] |
/schedule |
[cfp_schedule] |
/talks-by-tracks |
[cfp_talks_by_tracks] |
/talks-by-sessions |
[cfp_talks_by_sessions] |
/search-results |
[cfp_search_results] |
All pages must have no parent page.
Displays a grid of all speakers.
| Attribute | Default | Description |
|---|---|---|
size |
300 |
Maximum number of speakers to fetch |
random |
false |
Randomise the order (yes / true) |
title |
— | Heading above the grid |
subtitle |
— | Sub-heading |
hide_search |
false |
Hide the search form |
[cfp_speakers size=20 random=yes title="Our Speakers" subtitle="Meet the lineup"]
Renders the full speaker profile page. Reads speaker_slug or id from the URL query string — no attributes needed.
Renders the full talk details page. Reads talk_slug or id from the URL query string — no attributes needed.
Displays the conference schedule grid.
| Attribute | Default | Description |
|---|---|---|
day |
(from URL) | Day name to display, e.g. monday |
[cfp_schedule]
Lists talks grouped by track.
| Attribute | Default | Description |
|---|---|---|
all |
false |
Show all tracks at once (true) instead of the tab selected by id |
[cfp_talks_by_tracks all=true]
Lists talks grouped by session type (Conference, Workshop, BOF, Lightning Talk, …).
Displays keyword search results and semantic similarity results. Reads query from the URL — no attributes needed.
Enable Offline Mode in Settings → CFP.DEV to crawl the entire CFP.DEV API and all CDN images (speaker photos, track images, Flickr album thumbnails) into a local dated snapshot under wp-content/uploads/cfp-dev-offline/.
Once active:
- All
getJSON()calls are served from the local snapshot - No external requests to
*.cfp.devor CDN hosts are made - A
manifest.jsonis written at crawl completion with per-URL stats - Click Re-crawl Now in the admin UI to refresh the snapshot at any time
- PHP ≥ 8.0
- Composer
git clone https://github.com/patbaumgartner/cfp-dev-shortcodes.git
cd cfp-dev-shortcodes
composer installcomposer lint # PHP_CodeSniffer (WordPress Coding Standards)
composer lint-fix # phpcbf auto-fixGitHub Actions runs PHP syntax check (php -l) and PHPCS on every push and pull request to main.
Contributions are welcome! Please read CONTRIBUTING.md and open a pull request or issue.
- Stephan Janssen — @stephan007
- Patrick Baumgartner — @patbaumgartner
GPL-2.0-or-later — see LICENSE.txt.