Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/bkkalana/edu-advance/archive/refs/heads/main.zipNo built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.
Episode Courses - WordPress Plugin
A comprehensive WordPress plugin that maps WooCommerce virtual products to episode-based courses with secure video playback, resume functionality, and Elementor widgets.
Features
- Course Management: Create courses with multiple episodes from WordPress Media Library
- WooCommerce Integration: Automatic access granting on product purchase
- Secure Video Playback: Signed, time-limited URLs for video security
- Resume Functionality: Automatically resume playback from last watched position
- Elementor Widgets: Course archive and player widgets for easy page building
- Multiple CDN Support: Local, AWS S3, BunnyCDN, and Vimeo providers
- Access Control: Preview episodes and locked content for non-purchasers
- Progress Tracking: Save and track user progress per episode
Installation
- Upload the plugin folder to
/wp-content/plugins/ - Activate the plugin through the 'Plugins' menu in WordPress
- Ensure WooCommerce is installed and activated
- Configure settings at Courses > Settings
Requirements
- WordPress 5.8+
- PHP 7.4+
- WooCommerce 5.0+
- Elementor (optional, for widgets)
Configuration
1. Provider Setup
Go to Courses > Settings > Provider and select your video hosting:
- Local: Videos stored in WordPress Media Library
- AWS S3: Requires Access Key, Secret Key, Bucket, and Region
- BunnyCDN: Requires Token and Library ID
- Vimeo: Requires Access Token
2. Create a Course
- Go to Courses > Add New
- Set course title, description, and thumbnail
- Map to a WooCommerce product in the sidebar metabox
- Add episodes using the "Add Episode from Media Library" button
- Configure episode order, titles, descriptions, and preview flags
3. Elementor Widgets
Course Archive Widget:
- Display courses in a grid layout
- Show price, excerpt, and buy button
- Configurable columns and ordering
Course Player Widget:
- Two-column layout (playlist + player)
- Adjustable column widths
- Episode thumbnails option
- Autoplay next episode option
Usage
Shortcodes
Course Player:
[epcourse_player id="123"]
My Courses:
[epcourse_my_courses]
REST API Endpoints
GET /wp-json/epcourse/v1/course/{id}- Get course dataPOST /wp-json/epcourse/v1/progress- Save playback progressGET /wp-json/epcourse/v1/signed-url?episode_id={id}- Get signed video URLGET /wp-json/epcourse/v1/my-courses- Get user's coursesGET /wp-json/epcourse/v1/access/{course_id}- Check accessPOST /wp-json/epcourse/v1/grant- Grant access (admin only)
Security Features
- HMAC-signed URLs with configurable expiry
- User entitlement verification before video access
- Byte-range support for efficient streaming
- X-Sendfile support for large files
- Nonce verification on all AJAX requests
Hooks & Filters
Filters
epcourse_generate_signed_url- Customize signed URL generationepcourse_user_has_access- Customize access checkingepcourse_episode_meta- Modify episode metadata
Actions
epcourse_access_granted- Fired when access is grantedepcourse_access_revoked- Fired when access is revoked
Database Schema
wp_course_user_access
Stores user access records:
user_id- WordPress user IDcourse_id- Course post IDwoo_order_id- Related WooCommerce order IDgranted_at- When access was grantedexpires_at- When access expires (NULL for lifetime)
Troubleshooting
Videos not playing:
- Check signed URL expiry time in settings
- Verify user has access to the course
- Check file permissions for local files
Progress not saving:
- Ensure user is logged in
- Check browser console for JavaScript errors
- Verify REST API is accessible
Elementor widgets not showing:
- Ensure Elementor is installed and activated
- Clear Elementor cache
- Check widget category in Elementor panel
Support
For issues, feature requests, or contributions, please contact the plugin developer.
License
GPL v2 or later
Changelog
1.0.0
- Initial release
- Course and episode management
- WooCommerce integration
- Secure video playback
- Elementor widgets
- Progress tracking
- Multiple CDN support