lw-lms-backend-extend
LW LMS: backend extension contract
For companion plugins or themes extending LW LMS from PHP: enrollment automation, certificates, progress writes, access checks, custom settings tabs, analytics, admin tooling, and integrations with WooCommerce, WooCommerce Subscriptions, or WooCommerce Memberships.
BETA NOTICE. The plugin README says the plugin is under active development and not recommended for production use. Pin a tested version and review
CHANGELOG.mdbefore upgrading. This skill is verified against local lw-lms v1.6.0.
Version deltas that matter
- v1.6.0:
lw_lms_has_course_accessis reachable again as the final logged-in paid-course decision after all built-in checks.AccessRepository::revoke_by_source()adds source-scoped stored-access revocation. Minimum PHP is now 8.2. - v1.5.1: maintenance release, no functional changes.
- v1.5.0: WooCommerce Memberships access. Paid courses can link membership plans through
_lw_lms_membership_plan_ids. Active members get access at read time throughMembershipChecker; no DB schema change and no access row is written. - v1.4.0: WP-CLI operational workflow added. Use
lw-lms-wp-cli-operationsfor those commands. - v1.4.0:
lw_lms_settings_tabsfilter andSettingsPage::get_settings_group()added for companion settings tabs and sharedoptions.phpsaving. - v1.4.0: course REST
contentis public; only lesson content remains access-gated. - v1.3.0: enrollment/progress hook contract added or centralized:
lw_lms_pre_grant,lw_lms_after_grant,lw_lms_after_revoke,ProgressRepository::mark_course_completed(), read/write splits.
v1.6.0 course-access filter contract
AccessChecker::has_course_access() now reaches lw_lms_has_course_access after the complete built-in paid-course cascade: access rows, parent subscriptions, variation subscriptions, WooCommerce Memberships, then legacy purchases. The callback receives the aggregate built-in result and has final say, so it can grant or deliberately deny logged-in paid-course access.