{"id":380768,"date":"2026-10-13T16:39:20","date_gmt":"2026-10-13T16:39:20","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/no-lms\/"},"modified":"2026-10-13T16:38:52","modified_gmt":"2026-10-13T16:38:52","slug":"no-lms","status":"publish","type":"plugin","link":"https:\/\/bal.wordpress.org\/plugins\/no-lms\/","author":21018415,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.3","requires_php":"7.2.5","requires_plugins":null,"header_name":"No LMS","header_author":"","header_description":"Turn WordPress posts into courses with lessons and reader progress.","assets_banners_color":"","last_updated":"2026-10-13 16:38:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":54,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"frisotechmedia","date":"2026-10-13 16:38:52","revision":3744459}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[226441,18342,18364,2195,26514],"plugin_category":[],"plugin_contributors":[286519],"plugin_business_model":[],"class_list":["post-380768","plugin","type-plugin","status-publish","hentry","plugin_tags-course-builder","plugin_tags-elearning","plugin_tags-lessons","plugin_tags-lms","plugin_tags-online-courses","plugin_contributors-frisotechmedia","plugin_committers-frisotechmedia"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/no-lms.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>No LMS adds Module and Lesson blocks to the post editor. Course posts retain their\noriginal URL and any existing post content. Readers, including guests, can mark\nlessons complete. Progress is saved in the current browser, so it remains after\nreloads but does not sync across devices or browsers. The No LMS welcome screen\nexplains how to get started.\nThe Course Overview block lists every published course. Add it to a page yourself\nif you want a course listing.\nAfter activation, the welcome screen explains how to start, offers an optional\ndemo course draft, and lets you create a new course draft.<\/p>\n\n<h3>Authoring a course<\/h3>\n\n<ol>\n<li>Open an existing post or create a new one in the block editor.<\/li>\n<li>Turn on Course in the Course document panel.<\/li>\n<li>Keep existing blocks above the modules as an introduction, or move them into lessons.<\/li>\n<li>Add a Module block, set its title, and add Lesson blocks inside it.<\/li>\n<li>Add ordinary WordPress blocks such as paragraphs, images, and embeds inside each lesson.<\/li>\n<li>Publish or update the post. Each lesson needs content and a unique ID; the editor\nassigns IDs automatically, including fresh IDs to duplicated lessons.<\/li>\n<\/ol>\n\n<p>For a starting structure, insert the Course starter pattern from the block editor.\nIt adds an introduction, one module, and two lessons. Replace its example text before publishing.<\/p>\n\n<p>Choose a sidebar, horizontal, or Standalone course page layout in the Course panel.\nThe standalone layout is selected by default and gives the course its own full page with a minimal header,\nlarge title, lesson navigation, and an accent color you can set per course. It keeps\nthe post's URL and content, but uses the plugin page design instead of the theme's\nsingle-post template. Add a post excerpt to show a short description below its title.\nExisting blocks before the first module appear once on the course Overview. Readers\nthen move through one focused lesson at a time, while the full course remains\nreadable when JavaScript is unavailable. On small screens, readers can expand the\nlesson list when needed instead of scrolling past the whole outline.<\/p>\n\n<p>Modules and lessons can be renamed or reordered. Progress remains tied to each\nlesson ID. Deleted lessons stop counting toward the current total.<\/p>\n\n<h3>Reading a course<\/h3>\n\n<p>Open the post as usual. The outline links to each lesson and shows the completed\ncount and progress bar. Readers can use Mark complete or Mark incomplete at the end\nof a lesson. The choice is saved in this browser's local storage. Clearing site data\nalso clears progress. JavaScript and browser storage are needed to save progress.<\/p>\n\n<p>WordPress 6.3 or later and PHP 7.2.5 or later are required. The editor and reader\nscripts are built before packaging the plugin, as described below.<\/p>\n\n<h3>Source code and build instructions<\/h3>\n\n<p>The readable source code for the generated JavaScript and CSS in\n    frontend\/dist\/ is included in this plugin under \/frontend\/. Run\nnpm ci &amp;&amp; npm run build to rebuild the artifacts.<\/p>\n\n<h3>Data retention<\/h3>\n\n<p>The plugin does not store lesson progress on the server. Browser progress remains\nuntil the reader clears site data. Uninstalling the plugin keeps its data by default.\nIn No LMS &gt; Settings, enable \"Delete No LMS data when the plugin is uninstalled\"\nto remove plugin settings, course flags, layouts, accent colors, and demo markers\nwhen deleting the plugin. On multisite, this preference applies separately per site.\nPosts, pages, demo courses, and lesson content are always kept. Deactivation does\nnot remove data.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>no-lms<\/code> directory to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate No LMS through the WordPress Plugins screen.<\/li>\n<li>Open No LMS in the admin menu.<\/li>\n<\/ol>\n\n<p>The welcome screen appears after activation. You can create the optional demo draft\nthere or open an existing post and enable Course in its document settings.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20can%20i%20get%20support%20or%20request%20a%20feature%3F\"><h3>Where can I get support or request a feature?<\/h3><\/dt>\n<dd><p>For help, to report an issue, or to submit a feature request, visit\n<a href=\"https:\/\/ftam.nl\/en\/no-lms\/support\">No LMS support<\/a> or use the WordPress forum.<\/p><\/dd>\n<dt id=\"can%20i%20turn%20an%20existing%20post%20into%20a%20course%3F\"><h3>Can I turn an existing post into a course?<\/h3><\/dt>\n<dd><p>Yes. Enable Course in the post's document settings, then add Module and Lesson\nblocks. The post keeps its URL and existing content.<\/p><\/dd>\n<dt id=\"do%20readers%20need%20an%20account%3F\"><h3>Do readers need an account?<\/h3><\/dt>\n<dd><p>No. Guests can read published courses and mark lessons complete.<\/p><\/dd>\n<dt id=\"does%20lesson%20progress%20sync%20across%20devices%3F\"><h3>Does lesson progress sync across devices?<\/h3><\/dt>\n<dd><p>No. Progress is saved in the current browser's local storage. Using another browser\nor device, or clearing site data, starts with no saved progress.<\/p><\/dd>\n<dt id=\"can%20i%20use%20ordinary%20wordpress%20blocks%20in%20lessons%3F\"><h3>Can I use ordinary WordPress blocks in lessons?<\/h3><\/dt>\n<dd><p>Yes. Add paragraphs, images, embeds, and other WordPress blocks inside Lesson blocks.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20courses%20when%20i%20uninstall%20the%20plugin%3F\"><h3>What happens to my courses when I uninstall the plugin?<\/h3><\/dt>\n<dd><p>Posts, pages, and lesson content are kept. Plugin settings and course metadata are\nalso kept unless you enable \"Delete No LMS data when the plugin is uninstalled\"\nin No LMS &gt; Settings before deleting the plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Added post courses, module and lesson blocks, and browser-based lesson progress.<\/li>\n<\/ul>","raw_excerpt":"Turn a post into a course with modules, lessons, and per-reader progress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/380768","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=380768"}],"author":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/frisotechmedia"}],"wp:attachment":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=380768"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=380768"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=380768"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=380768"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=380768"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=380768"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}