A personal study helper for Learn WordPress courses with course plans, lesson checklists, dates, and progress tracking
A personal study helper for Learn WordPress courses. It runs as a WpApp at /learn-app/ and stores each student’s course plans in WordPress.
The prototype is aimed at WordPress Credits students who need more structure than a plain course page: selected courses, start/end dates, progress, and a clear checklist of lessons to complete.
Built on the WpApp framework, so the app lives outside the active theme while still using WordPress users, capabilities, post storage, transients, nonces, and AJAX.
Test the prototype in WordPress Playground
https://learn.wordpress.org/wp-json/.wp_course_plan custom post authored by the current user. Trashing the post removes the course from the active list./learn-app/ shows all active course plans when the user has more than one. If the user has one course, that course opens directly.?plan_id={id} opens one course plan with a module/lesson checklist loaded from Learn WordPress Sensei course structure.cd wp-content/plugins
git clone <this-repo> learn-app
cd learn-app
composer install
Activate Learn WordPress in WordPress and visit /learn-app/.
| URL | Page |
|---|---|
/learn-app/ |
Course search, active-course overview, or the single active course |
/learn-app/?course_search=credits |
Full-page Learn WordPress course search |
/learn-app/?plan_id={id} |
One course plan with lesson checklist and sidebar progress |
Course plans are stored as wp_course_plan posts:
post_author: the student/user who owns the planpost_status=publish: active coursepost_status=trash: removed course_wordpress_courses_course_id: Learn WordPress course ID_wordpress_courses_completed_lesson_ids: completed Learn lesson IDs_wordpress_courses_start_date: Y-m-d_wordpress_courses_end_date: Y-m-dLearn API responses are cached with WordPress transients to avoid hitting Learn WordPress on every request.
Useful public endpoints discovered during prototyping:
wp/v2/courseswp/v2/lessonssensei-internal/v1/course-structure/{course_id}wp/v2/course-categorywp/v2/audiencewp/v2/levelwp/v2/topicwp/v2/learning-pathwayThe Learn WordPress REST index advertises Application Passwords, but authenticated student capabilities still need validation. The prototype intentionally does not depend on Learn WordPress authentication.
learn-app.php Plugin bootstrap
src/App.php WpApp setup, hooks, AJAX progress saves
src/CoursePlans.php Course-plan CPT, post meta, dates, and progress storage
src/LearnApi.php Learn WordPress REST client and response normalization
templates/index.php Main app view, course search, overview, course checklist, sidebar
The included blueprint.json installs the plugin from the repository’s dist/main branch, matching the dist branch generated by the GitHub workflow.
GPL-2.0-or-later