Veo WP
A wordpress plugin for including veo links in wordpress
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/jkdow/veo_wp/archive/refs/heads/main.zipVeo WP is a WordPress plugin for managing manually entered Veo game recording links. It is designed for sports centres where staff copy Veo share URLs into WordPress and players need a searchable front-end recording list.
The plugin does not depend on the Veo API. Veo public API access is limited/invite-only, so the workflow is built around single-entry and bulk-entry share URL management.
Features
- Custom post type:
veo_recording - Admin single-recording fields for teams, date, round, sport, Veo URL, and notes
- Bulk import screen for fast table entry or CSV-style paste import
- Configurable sports list under Game Recordings > Settings
- Front-end shortcode:
[veo_recordings] - Server-side filtering by team, date, round, and sport
- Paginated recording list, newest entered recordings first
- AJAX-backed team suggestions using saved recording team names
- Uploadable plugin zip build via Composer
Requirements
- WordPress with standard plugin support
- PHP compatible with namespaced plugin code and Composer autoloading
- Composer for local development and release builds
Installation
For production upload, build the plugin zip:
composer run build
Upload the generated file in WordPress:
dist/veo-wp.zip
For local development, place this repository in wp-content/plugins/veo-wp or symlink it there, then activate Veo WP in WordPress.
The plugin can run from source without vendor/ because the main plugin file includes a manual fallback loader. Production zips include Composer's optimized autoloader.
Admin Usage
Add One Recording
Go to Game Recordings > Add New and fill in:
- Home team
- Away team
- Game date
- Round
- Sport
- Veo recording URL
- Notes
The post title is generated as:
{Home Team} vs {Away Team} - {Date}
Configure Sports
Go to Game Recordings > Settings.
Enter one sport per line. These values populate the sport dropdowns in the single-recording form, bulk import table, and front-end filter.
Defaults are:
futsal
netball
Bulk Import
Go to Game Recordings > Bulk Import.
The table starts with one row. Use Add row to add more rows. New rows copy date, round, and sport from the previous row for faster repeated entry.
CSV paste import uses this column order:
Home Team,Away Team,Veo URL,Date,Round,Sport
Dates must be YYYY-MM-DD.
Front-End Usage
Add this shortcode to a WordPress page:
[veo_recordings]
The shortcode renders:
- Team search with AJAX suggestions from saved home/away team names
- Date filter
- Round filter
- Sport filter
- Paginated recording cards
- Watch links that open Veo in a new tab
Filtering and pagination use normal page query parameters and preserve existing WordPress page query args such as page_id.
Release Commands
Get the current synchronized package/plugin version:
composer run version:get
Bump versions across composer.json, the plugin header, and VEO_WP_VERSION:
composer run version:bump -- patch
composer run version:bump -- minor
composer run version:bump -- major
Build the uploadable zip:
composer run build
Development Notes
Important files:
veo-wp.php- plugin bootstrap and fallback loaderincludes/PostTypes.php-veo_recordingregistrationincludes/MetaBoxes.php- single-recording admin fieldsincludes/AdminBulkImport.php- bulk import screen and import handlingincludes/Settings.php- sports settings pageincludes/RecordingRepository.php- front-end recording queries and lookup dataincludes/Shortcodes.php- shortcode rendering, filters, and paginationincludes/TeamSuggestions.php- REST endpoint for team suggestionsincludes/Helpers.php- shared sanitization and metadata helpersassets/css/frontend.css- front-end shortcode stylingassets/css/admin.css- bulk import admin stylingassets/js/frontend.js- team suggestion UIassets/js/admin-bulk-import.js- bulk import row cloning
Generated directories are ignored by Git:
vendor/dist/
Verification
Recommended pre-release checks:
php -l veo-wp.php
find includes -name '*.php' -print -exec php -l {} \;
php -l scripts/bump-version.php
php -l scripts/get-version.php
bash -n scripts/build-zip.sh
composer validate --no-check-publish
composer run version:get
composer run build
Composer warns that the version field is usually omitted for packages published to Packagist. This plugin intentionally keeps the field so release scripts can synchronize WordPress and Composer versions.