Seven lessons in, you’ve built a complete AI layer for a course and membership product, not six disconnected demos, a tutor, a progress recommender, a grading assistant, a tiered permission gate, a structure-sync job, and a moderation queue that all share the same underlying discipline: real functions, real methods, and a human left in charge of anything consequential. This lesson pulls it into one picture.
The pieces, one more time, as a single picture
Tutoring (Lesson 2): learndash_get_course_id() resolves a lesson to its course, a
course_id column added to Course 10’s embeddings table restricts retrieval to that
course alone, and sfwd_lms_has_access() gates the ability on real enrollment before
any of it runs.
Adaptivity (Lesson 3): learndash_quiz_completed and learndash_lesson_completed
capture real progress signals, learndash_get_course_steps() supplies what’s left, and
generate_text() produces exactly one of “continue” or “review” plus a reason, stored
as dismissible advice, never an enforced path change.
Grading (Lesson 4): a rubric and a free-text answer go to generate_text(), the
response is parsed for a fixed Score:/Feedback: format, and the result is stored
with a pending_review status this ability’s own code never advances past.
Gating (Lesson 5): MeprUser::is_active_on_membership( MeprProduct $prd ) inside
the tutor’s own permission_callback, layered on top of the LearnDash enrollment check
rather than replacing it, makes the AI tutor a genuinely enforced, tiered feature.
Structure sync (Lesson 6): save_post re-indexes edited content, and a scheduled
reconciliation pass against learndash_get_course_steps() catches structural changes,
detached or reordered steps, that editing hooks alone can never see.
Moderation (Lesson 7): Course 6’s classify-and-log pattern, generalized to a content-type-agnostic table, flags community and forum content for a human moderator and never auto-removes anything, regardless of which plugin the content came from.
Every lesson in this course produces a suggestion, a recommendation, or a flag, never a final action. That’s not a limitation this course fell short of, it’s the actual design. A course or membership business runs on the trust that grades are fair, learning paths aren’t silently rerouted, and a flagged post gets a real second look before anything happens to it. Automate the judgment step in any of these six areas and you’ve traded a useful AI feature for a way to quietly damage that trust.
Where this fits against the rest of the track
| Course | Relationship |
|---|---|
| Build a RAG Knowledge Base in WordPress (Course 10) | Supplied the entire retrieval pipeline this course’s tutor depends on, embeddings, chunking, storage, and grounded generation, extended here with course-scoped filtering. |
| AI Content & SEO Automation for WordPress (Course 6) | Supplied the classify-and-log, human-in-the-loop moderation pattern this course generalized past blog comments to forum and community content. |
| WordPress MCP Security & Authentication | Established permission_callback as an object- and context-aware gate, the exact pattern this course’s gating lesson extended with a MemberPress membership check. |
What to build next on your own
Before moving on, it’s worth running the full loop against your own site: enroll a real test student at a non-premium membership tier, confirm the tutor correctly refuses them, upgrade that same test account, confirm the tutor now answers from the correct course only, complete a quiz with a deliberately low score, and confirm the adaptive-path recommendation actually leans toward review. That end-to-end walk matters more than any single lesson’s code sample, it’s the real test of whether these six pieces hold together as one coherent product feature rather than six separate demos.
Recap
This course took a genuinely underserved WordPress vertical, course and membership products, and built a real AI layer for it on top of real LearnDash functions and real MemberPress methods: a tutor grounded in a specific course’s own content, a progress- aware recommender that only ever suggests, a grading assistant that only ever proposes, a membership tier boundary enforced inside the tutor’s own permission check, a reconciliation job that keeps the tutor’s index honest against LearnDash’s actual course structure, and a moderation queue built for a paid community’s higher stakes. Every one of those six pieces leaves a human in charge of the decision that actually matters, which is what makes this course’s version of “AI-powered” something you can put in front of paying students and members with confidence.
Resources & further reading
- LearnDash Developer Documentation, developers.learndash.com
- MemberPress, memberpress.com
- PHP AI Client SDK repository, GitHub