A secured REST API bridge for WordPress that enables an external Laravel admin dashboard to manage LearnDash courses, lessons, users, and WooCommerce statistics. Utilizes WordPress Application Passwords for authentication.
- π Secure Authentication - Uses WordPress Application Passwords with Basic Auth
- π Course Management - Full CRUD operations for LearnDash courses
- π Lesson Management - Create, update, delete, and organize lessons
- π₯ User Management - List users, manage enrollments, and change roles
- π Statistics Dashboard - WooCommerce sales data, revenue tracking, and subscription metrics
- π Permission-Based Access - Admin-level permissions required for all endpoints
- WordPress 5.6 or higher
- PHP 7.4 or higher
- LearnDash LMS plugin
- WooCommerce (for statistics features)
- WooCommerce Subscriptions (optional, for subscription metrics)
- Application Passwords enabled
- Upload the plugin files to
/wp-content/plugins/campus-lms-bridge/directory - Activate the plugin through the 'Plugins' screen in WordPress
- Ensure LearnDash and WooCommerce are installed and activated
- Generate an Application Password for API access
All API endpoints require authentication using WordPress Application Passwords.
- Go to Users β Profile in WordPress admin
- Scroll to Application Passwords section
- Enter a name (e.g., "Laravel Dashboard")
- Click Add New Application Password
- Copy the generated password
Use Basic Authentication with your WordPress username and the Application Password:
curl -X GET https://your-site.com/wp-json/campus/v1/courses \
-u username:application-passwordBase URL: /wp-json/campus/v1
| Method | Endpoint | Description |
|---|---|---|
GET |
/courses |
List all courses |
GET |
/courses/{id} |
Get a single course |
POST |
/courses |
Create a new course |
PUT |
/courses/{id} |
Update a course |
DELETE |
/courses/{id} |
Delete a course |
Query Parameters for GET /courses:
page- Page number (default: 1)per_page- Items per page (default: 20, max: 100)status- Post status (default: any)
POST/PUT Parameters:
title- Course title (required for POST)content- Course descriptionstatus- Post status (publish, draft, etc.)price- Course priceaccess_mode- Access type (free, open, closed, etc.)
| Method | Endpoint | Description |
|---|---|---|
GET |
/courses/{course_id}/lessons |
List all lessons for a course |
POST |
/courses/{course_id}/lessons |
Create a new lesson |
PUT |
/lessons/{id} |
Update a lesson |
DELETE |
/lessons/{id} |
Delete a lesson |
POST/PUT Parameters:
title- Lesson title (required for POST)content- Lesson contentorder- Lesson order/menu order
| Method | Endpoint | Description |
|---|---|---|
GET |
/users |
List all users |
GET |
/users/{id} |
Get a single user |
POST |
/users/{id}/enroll |
Enroll user in a course |
POST |
/users/{id}/unenroll |
Unenroll user from a course |
PUT |
/users/{id}/role |
Change user role |
Query Parameters for GET /users:
page- Page number (default: 1)per_page- Items per page (default: 20, max: 100)search- Search term
Enrollment Parameters:
course_id- Course ID (required)
Role Change Parameters:
role- WordPress role (subscriber, student, teacher, administrator, etc.)
| Method | Endpoint | Description |
|---|---|---|
GET |
/stats |
Get comprehensive dashboard statistics |
Statistics Response Includes:
total_users- Total registered userstotal_courses- Total published coursestotal_revenue- Lifetime WooCommerce revenueactive_subscriptions- Active subscription countmrr- Monthly Recurring Revenueenrollments_this_month- Current month enrollmentsmonthly_revenue- Revenue breakdown by month (chart data)subscription_breakdown- Subscription status distributiondaily_enrollments- Daily enrollment trends (chart data)top_products- Best-selling products
curl -X GET "https://your-site.com/wp-json/campus/v1/courses?page=1&per_page=10" \
-u username:app-passwordcurl -X POST https://your-site.com/wp-json/campus/v1/courses \
-u username:app-password \
-H "Content-Type: application/json" \
-d '{
"title": "Introduction to WordPress",
"content": "Learn the basics of WordPress development",
"status": "publish",
"price": "99.00",
"access_mode": "open"
}'curl -X PUT https://your-site.com/wp-json/campus/v1/courses/123 \
-u username:app-password \
-H "Content-Type: application/json" \
-d '{
"title": "Advanced WordPress Development",
"price": "149.00"
}'curl -X POST https://your-site.com/wp-json/campus/v1/courses/123/lessons \
-u username:app-password \
-H "Content-Type: application/json" \
-d '{
"title": "Lesson 1: Getting Started",
"content": "Welcome to the course!",
"order": 1
}'curl -X POST https://your-site.com/wp-json/campus/v1/users/456/enroll \
-u username:app-password \
-H "Content-Type: application/json" \
-d '{
"course_id": 123
}'curl -X GET https://your-site.com/wp-json/campus/v1/stats \
-u username:app-password- β All endpoints require authentication via Application Passwords
- β
Admin-level permissions (
manage_options) required - β Input sanitization on all parameters
- β WordPress nonces not required (using Application Passwords)
- β HTTPS recommended for production environments
The API returns standard HTTP status codes:
200- Success201- Created400- Bad Request401- Unauthorized (authentication required)403- Forbidden (insufficient permissions)404- Not Found500- Internal Server Error
Example error response:
{
"code": "campus_rest_unauthorized",
"message": "Authentication required. Use an Application Password via Basic Auth.",
"data": {
"status": 401
}
}campus-lms-bridge/
βββ campus-lms-bridge.php # Main plugin file
βββ README.md # This file
βββ includes/
βββ class-campus-auth.php # Authentication handler
βββ class-campus-courses.php # Courses REST controller
βββ class-campus-lessons.php # Lessons REST controller
βββ class-campus-users.php # Users REST controller
βββ class-campus-stats.php # Statistics REST controller
CAMPUS_BRIDGE_VERSION- Plugin versionCAMPUS_BRIDGE_PATH- Plugin directory pathCAMPUS_BRIDGE_NS- REST API namespace (campus/v1)
The plugin uses standard WordPress hooks:
plugins_loaded- Initialize plugin classesrest_api_init- Register REST API routes
For issues and feature requests, please contact WebCoders Dev.
- Initial release
- Course CRUD operations
- Lesson management
- User management and enrollment
- WooCommerce statistics integration
- Application Password authentication
This plugin is proprietary software developed by WebCoders Dev.
Author: WebCoders Dev
Version: 1.0.0
Requires: WordPress 5.6+, LearnDash, WooCommerce