Game Day - Softball/Baseball League Scheduling
WordPress Plugin: Manage practice, game, and other event schedules for any sports league or club — with team filtering, month/list views, print/PDF export, and per-team iCal subscriptions.
by Rodier Web Solutions · github.com/rodier-web-solutions/wp-game-day · 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/rodier-web-solutions/wp-game-day/archive/refs/heads/main.zipReadme
Game Day - Softball/Baseball League Scheduling
A lightweight WordPress plugin for softball/baseball leagues and clubs to manage practice, game, and other event schedules — with team-based filtering, month/list calendar views, print-friendly export, and per-team iCal subscriptions so members only sync the events that apply to them.
Built generically for reuse by any league or club — no organization-specific naming or branding.
- Requires WordPress: 6.0+
- Requires PHP: 7.4+
- License: GPL-2.0-or-later
Features
- Events as a custom post type (
gameday_event) with three types — Game, Practice, and Other — each showing the right fields via a conditional editor. - Teams and Locations as taxonomies. Locations carry address fields (line 1, city, state, zip).
- Lookup-or-text inputs: pick an existing team/location, or type a free-text opponent/venue.
- Front-end views via shortcode or block:
- List and Month (calendar) views, switchable by the visitor.
- Filter by team; "Upcoming only" toggle (on by default).
- Cancelled events shown with a badge, not hidden.
- Print button that opens a clean, condensed, printer-friendly list (Save as PDF from the browser).
- Locations list via shortcode or block — alphabetical, with each address linking to Google Maps.
- iCal subscriptions — a stable feed per team plus a combined "all events" feed, generated with a self-contained RFC 5545 writer (no external libraries). Cancelled events carry
STATUS:CANCELLED. On-page Subscribe buttons usewebcal://. - Bulk CSV import/export — export all events to a spreadsheet, edit, and re-import (update by Event ID, create on blank ID). Per-row validation; deletions in the sheet never delete events.
- Duplicate Event action for quickly cloning similar events.
- Settings — default event duration, default front-end view, time-zone confirmation, and an opt-in "delete all data on uninstall."
- Data-safe: deactivation never deletes anything; uninstall only removes data when you explicitly opt in.
Installation
- Copy the
game-dayfolder intowp-content/plugins/(or upload the ZIP via Plugins → Add New → Upload). - Activate Game Day on the Plugins screen.
- Add teams under Game Day → Teams, and (optionally) locations with addresses under Game Day → Locations.
- Add events under Game Day → Events.
- Put the schedule on a page with the block or shortcode (below).
Permalinks: iCal feeds work on any permalink setting. With pretty permalinks they use tidy URLs like
/game-day/ical/team-slug/; on "Plain" permalinks the Subscribe buttons fall back to?gameday_ical=team-slug. If a pretty feed URL 404s right after install, visit Settings → Permalinks and click Save once to flush the rewrite rules.
Usage
Both a block and a shortcode are available — they render the same thing.
Schedule
Block: insert Game Day Schedule (Widgets category). Choose a team and initial view in the block sidebar.
Shortcode:
[gameday_schedule] Full schedule (all teams)
[gameday_schedule team="team-slug"] One team only (hides the team filter)
[gameday_schedule view="month"] Force the initial view (list | month)
Locations
Block: insert Game Day Locations (Widgets category).
Shortcode:
[gameday_locations]
iCal subscription URLs
| Feed | URL |
|---|---|
| Single team | https://your-site.com/game-day/ical/team-slug/ |
| All events | https://your-site.com/game-day/ical/all/ |
Bulk import / export
Under Game Day → Import / Export:
- Export all events (CSV) — the first column is the Event ID.
- Edit in Excel or Google Sheets.
- Import the CSV.
- A row with an Event ID updates that event; a blank Event ID creates a new one.
- Deleting rows in the spreadsheet does not delete events.
- Teams and Locations are matched by name and are never created or changed — only events are written.
- Every row is validated first; if any row has an error it's reported by line number and nothing is imported until it's fixed.
Naming conventions
| Item | Value |
|---|---|
| Text domain / slug | game-day |
| Function/hook prefix | gameday_ |
| Post type | gameday_event |
| Taxonomies | gameday_team, gameday_location |
| Shortcodes | [gameday_schedule], [gameday_locations] |
Development
Pure PHP/CSS/JS — no build step, no Composer or npm dependencies. Front-end interactivity is vanilla JS; the Gutenberg blocks are dynamic (server-rendered, sharing the shortcode's render path) and authored without JSX.
game-day.php Bootstrap: constants, includes, activation/deactivation
uninstall.php Opt-in data removal
includes/ CPT, taxonomies, meta boxes, admin, settings, iCal,
shortcodes, block, AJAX, import/export, helpers
assets/ Front-end + admin CSS/JS
blocks/ Block editor scripts (schedule, locations)
Support
Game Day is free, with no ads, upsells, or data collection. If it saves your league some time, you can support ongoing development and maintenance:
License
GPL-2.0-or-later. Copyright © Rodier Web Solutions.