Oxford Course Discovery System
A WordPress plugin for a Course Discovery System, designed for Oxford International.
by Santosh Singh · github.com/san7848/oxford-course-discovery · website
★ 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/san7848/oxford-course-discovery/archive/refs/heads/main.zipA scalable and extensible Course Discovery system for WordPress, built without external plugins (except ACF).
Features
- Custom post types for Courses, Instructors, and Providers
- Advanced filtering system with AND/OR logic
- Responsive, accessible frontend interface
- Custom database tables for optimized date queries
- Extensible filter architecture using Strategy Pattern
- AJAX-based filtering without page reload
Installation
- Upload the plugin folder to
/wp-content/plugins/ - Activate the plugin through WordPress admin
- Install and activate Advanced Custom Fields PRO
- Run the database setup:
- The plugin will automatically create necessary tables on activation
- Configure ACF fields (they're automatically registered)
Setup Instructions
1. Post Types Creation
After activation, you'll see new menu items for:
- Courses
- Instructors
- Providers
2. Adding Content
- Add Providers: Create provider entries with location information
- Add Instructors: Create instructor profiles
- Add Courses:
- Enter course details
- Set price, descriptions
- Select instructors and providers
- Add start dates in Month-Year format
3. Displaying the Course Discovery
Use the shortcode [course_discovery] on any page or post.
Database Schema
Custom Tables
wp_oxford_course_dates: Stores course start dates for optimized querying
WordPress Native
- Uses standard WordPress posts, meta, and taxonomies
- Leverages WordPress query system with meta queries
Filter Logic Architecture
Design Patterns Used
- Strategy Pattern: Each filter type implements a common interface
- Factory Pattern: Filter manager creates and manages filter instances
- Singleton Pattern: Filter manager instance is globally available
Filter Combination Logic
- Between filters: AND logic (must match all selected filter types)
- Within filters: OR logic (can match any value within a filter)
Example: