WP Manifestindependent plugin directory
manifest / media / veo_wp

Veo WP

A wordpress plugin for including veo links in wordpress

by Josh Dowling · github.com/jkdow/veo_wp

0stars
0forks

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.zip

Veo 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 loader
  • includes/PostTypes.php - veo_recording registration
  • includes/MetaBoxes.php - single-recording admin fields
  • includes/AdminBulkImport.php - bulk import screen and import handling
  • includes/Settings.php - sports settings page
  • includes/RecordingRepository.php - front-end recording queries and lookup data
  • includes/Shortcodes.php - shortcode rendering, filters, and pagination
  • includes/TeamSuggestions.php - REST endpoint for team suggestions
  • includes/Helpers.php - shared sanitization and metadata helpers
  • assets/css/frontend.css - front-end shortcode styling
  • assets/css/admin.css - bulk import admin styling
  • assets/js/frontend.js - team suggestion UI
  • assets/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.