{"id":385233,"date":"2026-10-17T00:20:52","date_gmt":"2026-10-17T00:20:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/stedica-lms\/"},"modified":"2026-10-25T07:19:14","modified_gmt":"2026-10-25T07:19:14","slug":"stedica-lms","status":"publish","type":"plugin","link":"https:\/\/tg.wordpress.org\/plugins\/stedica-lms\/","author":18317600,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.5.9","stable_tag":"2.5.9","tested":"7.1.3","requires":"6.2","requires_php":"8.1","requires_plugins":null,"header_name":"Stedica LMS","header_author":"Stedica","header_description":"A complete self-contained Learning Management System for WordPress: courses, quizzes, SCORM, prerequisites, grading, certificates, gamification and selling through WooCommerce.","assets_banners_color":"a0a1ac","last_updated":"2026-10-25 07:19:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/stedica.com\/stedica-lms\/","header_author_uri":"https:\/\/stedica.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":189,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.5.7":{"tag":"2.5.7","author":"stedica","date":"2026-10-17 00:20:30","revision":3751275},"2.5.8":{"tag":"2.5.8","author":"stedica","date":"2026-10-25 06:33:32","revision":3764008},"2.5.9":{"tag":"2.5.9","author":"stedica","date":"2026-10-25 07:19:14","revision":3764046}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3751274,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3751274,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3751274,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3751274,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3751274,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.5.7","2.5.8","2.5.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3751274,"resolution":"1","location":"assets","locale":"","width":1280,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3751274,"resolution":"2","location":"assets","locale":"","width":1280,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3751274,"resolution":"3","location":"assets","locale":"","width":1280,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3751274,"resolution":"4","location":"assets","locale":"","width":1280,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3751274,"resolution":"5","location":"assets","locale":"","width":1280,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3751274,"resolution":"6","location":"assets","locale":"","width":1280,"height":900}},"screenshots":{"1":"The course player a learner sees: lesson and topic structure on the left, the topic\nitself on the right, and progress saved as they go.","2":"The course builder. Lessons and topics are dragged into order; each topic is text,\nvideo, audio, a document, SCORM, H5P, a quiz or an assignment.","3":"Every course at a glance, with how many learners are active on each.","4":"The course catalogue on the front end, built from a shortcode or a block.","5":"Enrolling learners one at a time or in bulk, with progress and access for each.","6":"The dashboard, which is also where a new site starts."}},"plugin_section":[],"plugin_tags":[7114,18342,2195,583,55116],"plugin_category":[53],"plugin_contributors":[278380],"plugin_business_model":[],"class_list":["post-385233","plugin","type-plugin","status-publish","hentry","plugin_tags-courses","plugin_tags-elearning","plugin_tags-lms","plugin_tags-quiz","plugin_tags-scorm","plugin_category-ratings-and-reviews","plugin_contributors-stedica","plugin_committers-stedica"],"banners":{"banner":"https:\/\/ps.w.org\/stedica-lms\/assets\/banner-772x250.png?rev=3751274","banner_2x":"https:\/\/ps.w.org\/stedica-lms\/assets\/banner-1544x500.png?rev=3751274","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/stedica-lms\/assets\/icon.svg?rev=3751274","icon":"https:\/\/ps.w.org\/stedica-lms\/assets\/icon.svg?rev=3751274","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/stedica-lms\/assets\/screenshot-1.png?rev=3751274","caption":"The course player a learner sees: lesson and topic structure on the left, the topic\nitself on the right, and progress saved as they go."},{"src":"https:\/\/ps.w.org\/stedica-lms\/assets\/screenshot-2.png?rev=3751274","caption":"The course builder. Lessons and topics are dragged into order; each topic is text,\nvideo, audio, a document, SCORM, H5P, a quiz or an assignment."},{"src":"https:\/\/ps.w.org\/stedica-lms\/assets\/screenshot-3.png?rev=3751274","caption":"Every course at a glance, with how many learners are active on each."},{"src":"https:\/\/ps.w.org\/stedica-lms\/assets\/screenshot-4.png?rev=3751274","caption":"The course catalogue on the front end, built from a shortcode or a block."},{"src":"https:\/\/ps.w.org\/stedica-lms\/assets\/screenshot-5.png?rev=3751274","caption":"Enrolling learners one at a time or in bulk, with progress and access for each."},{"src":"https:\/\/ps.w.org\/stedica-lms\/assets\/screenshot-6.png?rev=3751274","caption":"The dashboard, which is also where a new site starts."}],"raw_content":"<!--section=description-->\n<p>Stedica LMS turns a WordPress site into a full training platform, with no external\nservice required.<\/p>\n\n<p><strong>For learners<\/strong>\nCourse catalog and self-enrolment, a course player with resume, progress tracking and\ndrip-released lessons, eight quiz types, certificates, leaderboards and achievements.<\/p>\n\n<p><strong>For instructors<\/strong>\nA drag-and-drop course builder (lessons and topics: text, video, audio, document, SCORM,\nH5P, quiz, assignment), a reusable question bank, a grading queue with a visual rubric\ngrid, a weighted gradebook, and per-learner and per-course progress with CSV export.<\/p>\n\n<p><strong>For administrators<\/strong>\nRoles and capabilities, white-label branding, editable categories and levels, and an\naudit log covering 27 action types.<\/p>\n\n<p><strong>Selling courses<\/strong>\nLink a WooCommerce product to a course: the buyer is enrolled on payment and access is\nrevoked on refund. No external service and no subscription required.<\/p>\n\n<p><strong>Standards<\/strong>\nSCORM 1.2 and 2004 import and runtime, with resume and HTTP Range media streaming.<\/p>\n\n<h3>License<\/h3>\n\n<p>Stedica LMS is distributed under the GNU General Public License. The plugin's own code is\nGPL-3.0-or-later.<\/p>\n\n<p>It bundles third-party components under their own compatible licences, and two of them are\nworth naming because they are stricter than the plugin's own: the Freemius SDK in\n    vendor\/freemius\/ is GPL-3.0-only, and dompdf's rendering library in <code>vendor\/dompdf\/<\/code> is\nLGPL-2.1. Taken as a whole, therefore, this distribution is effectively GPL-3.0 without the\n\"or later\" option, because one of its components does not offer it.<\/p>\n\n<p>Both <code>LICENSE<\/code> (GPLv3, the licence this plugin is under) and <code>LICENSE-GPL-2.0.txt<\/code> (included\nbecause WordPress itself is GPLv2-or-later and the directory asks for a compatible licence)\nship in the package. GPLv3 is compatible with that requirement.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to one external service, and only for licensing.<\/p>\n\n<p><strong>Freemius<\/strong><\/p>\n\n<p>Freemius handles licensing, the free trial and update delivery for the optional paid\nadd-on, Stedica LMS Premium. The licensing SDK is bundled in this plugin.<\/p>\n\n<p><em>Nothing is sent until you choose to send it.<\/em> On a fresh install the plugin runs in\nanonymous mode: no request is made to Freemius and no data leaves your site. Requests\nbegin only when you opt in to Freemius' service, start the free trial, or activate a\nlicence key \u2014 each of which is an explicit action you take.<\/p>\n\n<p>Once you have opted in, the following is sent to Freemius:<\/p>\n\n<ul>\n<li>when you opt in, start a trial or activate a licence: your site URL, the email address\nand name of the WordPress user performing the action, and the WordPress, PHP and plugin\nversions<\/li>\n<li>when checking for updates to the paid add-on, and when validating a licence: your site\nURL and the installed plugin version<\/li>\n<\/ul>\n\n<p>No learner data, course content, grades or quiz results are ever sent.<\/p>\n\n<p>If you never opt in, the plugin remains fully functional and contacts nothing. The paid\nadd-on is the only thing that requires it.<\/p>\n\n<p>Service provided by Freemius, Inc.\nTerms of Service: https:\/\/freemius.com\/terms\/\nPrivacy Policy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<h3>Security<\/h3>\n\n<p>Authorization is enforced server-side on every REST route and every admin screen \u2014\nhiding a menu item is never treated as access control. Learner-owned resources are\nownership-checked to prevent enumeration by id. Quiz answer keys never leave the\nserver. Protected files (SCORM assets, submissions, certificates) are served through a\nPHP proxy that derives authorization from the request path, because a SCORM package's\nrelative sub-resource requests cannot carry a token. Grades are clamped server-side.\nSecrets are masked in every API response, and are encrypted at rest when the PHP\nOpenSSL extension is available (it is on virtually all hosts; without it they are stored\nunencrypted and only the masking applies).<\/p>\n\n<h3>Shortcodes<\/h3>\n\n<p>For learners: <code>[stedica_my_courses]<\/code>, <code>[stedica_catalog]<\/code>, <code>[stedica_course_player]<\/code>,\n    [stedica_leaderboard], <code>[stedica_certificates]<\/code>, <code>[stedica_discussions]<\/code>,\n    [stedica_achievements]<\/p>\n\n<p>Stedica LMS Premium, a separate add-on, adds <code>[stedica_live_sessions]<\/code>,\n    [stedica_my_skills], <code>[stedica_learning_paths]<\/code> and <code>[stedica_membership]<\/code>. They are\nlisted here so you know what exists, not offered by this plugin \u2014 this package does not\ncontain them and does not register them.<\/p>\n\n<p>For staff: <code>[stedica_my_group]<\/code> shows a group leader their members' progress, and\n    [stedica_instructor] gives an instructor their grading queue. Both are safe to put on an\nordinary page \u2014 each shows only what the person viewing it is entitled to see, and a\nvisitor with no such role sees a plain explanation rather than an error.<\/p>\n\n<p>Every surface is also a <strong>block<\/strong> \u2014 search \"Stedica\" in the inserter \u2014 and an <strong>Elementor\nwidget<\/strong>, found under a Stedica LMS category with a dropdown for which surface to show.\nAll three render through the same code, so they behave identically.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin through Plugins \u2192 Add New \u2192 Upload Plugin, or extract into\n   wp-content\/plugins\/.<\/li>\n<li>Activate. Tables, roles and upload directories are created automatically.<\/li>\n<li>Create a page containing <code>[stedica_catalog]<\/code> and another containing\n   [stedica_course_player], then point Stedica LMS \u2192 Settings at both so links and\nemails resolve.<\/li>\n<li>To sell courses, set Stedica LMS \u2192 Settings \u2192 Commerce provider to WooCommerce and\ninstall WooCommerce if it is not already there. It defaults to None, and until it is\nset the course-to-product field does not appear on a product and no order grants\naccess. Courses can of course be free, or enrolled by an administrator, with no\nprovider set at all.<\/li>\n<\/ol>\n\n<p>Certificates are rendered as PDF by dompdf, which ships inside this plugin. There is\nnothing to install and no external service involved. If the library cannot be loaded \u2014\na source checkout with no dependencies installed, for instance \u2014 certificates fall back\nto printable HTML and every other feature is unaffected.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20uninstalling%20delete%20my%20courses%3F\"><h3>Does uninstalling delete my courses?<\/h3><\/dt>\n<dd><p>No. Data is preserved unless you explicitly tick \"Remove all data on uninstall\" in\nSettings before removing the plugin.<\/p><\/dd>\n<dt id=\"do%20i%20need%20woocommerce%3F\"><h3>Do I need WooCommerce?<\/h3><\/dt>\n<dd><p>Only to sell courses. Edit a WooCommerce product and pick the course it grants from\nthe Stedica LMS panel; enrolment happens when the order completes, and entitlement is\nalways checked server-side. Refunds and cancellations revoke that access again.<\/p><\/dd>\n<dt id=\"what%20is%20not%20included%3F\"><h3>What is not included?<\/h3><\/dt>\n<dd><p>LTI and xAPI are not implemented and are not planned. The LTI topic type is retired in\nthe course builder, and a course still holding one is flagged as needing replacement. H5P\nis supported as an embed rather than a bundled runtime. Selling runs\nthrough WooCommerce; there is no native card checkout in this plugin. There is no PWA\nsupport. The plugin ships a translation template (languages\/stedica-lms.pot) but no\ntranslations.<\/p>\n\n<p>These features are not in this plugin and are not disabled versions of anything here \u2014\nAI assistance, instructor-led sessions with seats and waitlists, competency frameworks,\nmulti-course learning paths, native Stripe checkout with subscriptions and coupons,\noutbound webhooks, cohort analytics with at-risk scoring, and the append-only completion\nregister with recertification and CEU credits. They are a separate paid add-on, and the\ncode for them is absent from this download rather than switched off.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<p>Older releases are in <code>changelog.txt<\/code>, which ships inside the plugin: WordPress.org\ntruncates this section, so only the most recent releases are repeated here.<\/p>\n\n<h4>2.5.9<\/h4>\n\n<ul>\n<li><strong>Fixed: a personal-data export left out points, streaks and levels.<\/strong> Those rows are\nkeyed by the learner rather than by a row id, and the export's paging asked the database\nto sort them by a column they do not have \u2014 so it returned nothing for that section and\nthe export completed without it. The erasure path had always removed the data correctly,\nso a subject access request disclosed less than an erasure request destroyed.<\/li>\n<li><strong>Fixed: deleting a course left its SCORM and H5P packages on disk.<\/strong> One archive per\nimport, unreadable once the course was gone. Packages orphaned by earlier deletions are\ncleared once on update. Course artwork is left in place, so image addresses already\npublished elsewhere keep working.<\/li>\n<\/ul>\n\n<h4>2.5.8<\/h4>\n\n<ul>\n<li><strong>Stedica LMS is now in Spanish<\/strong> (Spain and Mexico), covering the admin screens and\neverything a learner sees. The translations were finished before 2.5.7 but did not reach\nthat release.<\/li>\n<li><strong>Fixed: most of the Spanish translation could never load.<\/strong> The catalogue for the main\nadmin bundle was stored under a filename WordPress does not look for, so those screens\nstayed in English with a complete translation sitting unused beside them.<\/li>\n<li><strong>The home screen now opens with the Stedica banner<\/strong> \u2014 what the plugin does and what is\nincluded, over shortcuts to Courses, the grading queue and Settings, which follow what\nyou are allowed to do.<\/li>\n<li><strong>The licensing library was updated to Freemius SDK 2.13.5<\/strong>, a security fix from\nFreemius: output escaping in the account and activation notices, and the opt-in no longer\nruns for a user who cannot activate plugins.<\/li>\n<\/ul>\n\n<h4>2.5.7<\/h4>\n\n<ul>\n<li><strong>A SCORM package now stays as the file you uploaded<\/strong>, read directly rather than\nunpacked into hundreds of files on the server. The same modules play and resume, audio\nand video still seek, and a 12MB course now takes 12MB instead of 24MB. Existing\npackages keep working.<\/li>\n<li><strong>The certificate design moved into its own stylesheet<\/strong>, <code>certificate.css<\/code>, so a theme\noverride can restyle it without touching PHP.<\/li>\n<li><strong>Three course-lookup queries were rewritten<\/strong> so their use of placeholders is evident at\nthe call site. No behaviour changes.<\/li>\n<\/ul>","raw_excerpt":"A self-contained LMS: courses, eight quiz types, SCORM 1.2 and 2004, prerequisites, grading, certificates and achievements.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/385233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=385233"}],"author":[{"embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/stedica"}],"wp:attachment":[{"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=385233"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=385233"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=385233"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=385233"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=385233"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=385233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}