{"id":351442,"date":"2026-08-14T10:17:48","date_gmt":"2026-08-14T10:17:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/modern-instructor-cockpit-for-learndash\/"},"modified":"2026-08-15T16:10:55","modified_gmt":"2026-08-15T16:10:55","slug":"sev-instructor-cockpit-for-learndash","status":"publish","type":"plugin","link":"https:\/\/cor.wordpress.org\/plugins\/sev-instructor-cockpit-for-learndash\/","author":15085268,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.17.0","stable_tag":"1.17.0","tested":"7.1","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"SEV Instructor Cockpit for LearnDash","header_author":"sevmatic","header_description":"Adds a React-based instructor dashboard to LearnDash, with REST endpoints for user lookup and label management. Essay\/assignment grading endpoints live in the Pro add-on.","assets_banners_color":"224fbb","last_updated":"2026-08-15 16:10:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":209,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.11.0":{"tag":"1.11.0","author":"hfranz","date":"2026-08-14 10:17:33"},"1.12.0":{"tag":"1.12.0","author":"hfranz","date":"2026-08-14 11:17:56"},"1.12.1":{"tag":"1.12.1","author":"hfranz","date":"2026-08-14 12:29:14"},"1.12.2":{"tag":"1.12.2","author":"hfranz","date":"2026-08-14 13:44:09"},"1.12.3":{"tag":"1.12.3","author":"hfranz","date":"2026-08-14 13:55:13"},"1.13.0":{"tag":"1.13.0","author":"hfranz","date":"2026-08-15 09:27:31"},"1.14.0":{"tag":"1.14.0","author":"hfranz","date":"2026-08-15 10:30:32"},"1.15.0":{"tag":"1.15.0","author":"hfranz","date":"2026-08-15 12:56:01"},"1.15.1":{"tag":"1.15.1","author":"hfranz","date":"2026-08-15 13:03:29"},"1.16.0":{"tag":"1.16.0","author":"hfranz","date":"2026-08-15 14:13:58"},"1.17.0":{"tag":"1.17.0","author":"hfranz","date":"2026-08-15 16:10:55"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3647095,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500-de.png":{"filename":"banner-1544x500-de.png","revision":3651306,"resolution":"1544x500","location":"assets","locale":"de","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3651306,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250-de.png":{"filename":"banner-772x250-de.png","revision":3651306,"resolution":"772x250","location":"assets","locale":"de","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3651306,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.11.0","1.12.0","1.12.1","1.12.2","1.12.3","1.13.0","1.14.0","1.15.0","1.15.1","1.16.0","1.17.0"],"block_files":[],"assets_screenshots":{"screenshot-1-de.jpg":{"filename":"screenshot-1-de.jpg","revision":3648437,"resolution":"1","location":"assets","locale":"de","width":1400,"height":1352},"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3648437,"resolution":"1","location":"assets","locale":"","width":2083,"height":2012},"screenshot-2-de.jpg":{"filename":"screenshot-2-de.jpg","revision":3648437,"resolution":"2","location":"assets","locale":"de","width":1031,"height":1170},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3648437,"resolution":"2","location":"assets","locale":"","width":1031,"height":1170},"screenshot-3-de.jpg":{"filename":"screenshot-3-de.jpg","revision":3648437,"resolution":"3","location":"assets","locale":"de","width":1400,"height":1877},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3648437,"resolution":"3","location":"assets","locale":"","width":2083,"height":2282},"screenshot-4-de.jpg":{"filename":"screenshot-4-de.jpg","revision":3648437,"resolution":"4","location":"assets","locale":"de","width":1400,"height":1298},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3648437,"resolution":"4","location":"assets","locale":"","width":2083,"height":1932}},"screenshots":[]},"plugin_section":[],"plugin_tags":[434,18342,62817,10796,2195],"plugin_category":[],"plugin_contributors":[202978],"plugin_business_model":[],"class_list":["post-351442","plugin","type-plugin","status-publish","hentry","plugin_tags-dashboard","plugin_tags-elearning","plugin_tags-instructor","plugin_tags-learndash","plugin_tags-lms","plugin_contributors-hfranz","plugin_committers-hfranz"],"banners":{"banner":"https:\/\/ps.w.org\/sev-instructor-cockpit-for-learndash\/assets\/banner-772x250.png?rev=3651306","banner_2x":"https:\/\/ps.w.org\/sev-instructor-cockpit-for-learndash\/assets\/banner-1544x500.png?rev=3651306","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/sev-instructor-cockpit-for-learndash\/assets\/icon.svg?rev=3647095","icon":"https:\/\/ps.w.org\/sev-instructor-cockpit-for-learndash\/assets\/icon.svg?rev=3647095","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/sev-instructor-cockpit-for-learndash\/assets\/screenshot-1.jpg?rev=3648437","caption":""},{"src":"https:\/\/ps.w.org\/sev-instructor-cockpit-for-learndash\/assets\/screenshot-2.jpg?rev=3648437","caption":""},{"src":"https:\/\/ps.w.org\/sev-instructor-cockpit-for-learndash\/assets\/screenshot-3.jpg?rev=3648437","caption":""},{"src":"https:\/\/ps.w.org\/sev-instructor-cockpit-for-learndash\/assets\/screenshot-4.jpg?rev=3648437","caption":""}],"raw_content":"<!--section=description-->\n<p>SEV Instructor Cockpit for LearnDash is a companion plugin for <a href=\"https:\/\/www.learndash.com\/\">LearnDash LMS<\/a> and the \"Instructor Role\" plugin (<code>wdm_instructor<\/code>). It adds a small REST API and powers a separate, React-based Instructor Cockpit where instructors can see their courses, manage enrolled participants, and look up users to add to a course.<\/p>\n\n<p>This is an independent, unofficial add-on and is not affiliated with, endorsed by, or sponsored by LearnDash or WisdmLabs (the \"Instructor Role\" plugin's maker). \"LearnDash\" is a trademark of its respective owner and is used here only to describe compatibility.<\/p>\n\n<p><strong>What's included (free)<\/strong><\/p>\n\n<ul>\n<li>A React-based Instructor Cockpit: course list, course detail (structure, participants), participant search\/add.<\/li>\n<li>Self-service two-factor authentication (authenticator app + backup codes) from an \"Edit Profile\" page, if the separate \"Two-Factor\" plugin is installed.<\/li>\n<li>REST endpoints backing the dashboard: user lookup (by name\/email, not just users already enrolled), LearnDash's custom post-type labels (so the dashboard matches whatever terminology your site uses for \"Course\"\/\"Lesson\"\/etc.), and essay grading.<\/li>\n<li>Works alongside the \"Instructor Role\" plugin without modifying it.<\/li>\n<\/ul>\n\n<p><strong>SEV Instructor Cockpit for LearnDash \u2013 Pro<\/strong><\/p>\n\n<p>A separate, paid add-on plugin adds:<\/p>\n\n<ul>\n<li>Essay and assignment grading directly in the dashboard (question\/lesson list, submissions, grading).<\/li>\n<li>Edit, delete, and add users directly from the dashboard, including their course and group enrollment.<\/li>\n<li>A Groups tab: view groups and manage their courses, participants, and group leaders.<\/li>\n<li>Dashboard widgets for open assignments and recent essays awaiting grading.<\/li>\n<li>A Settings &gt; Design &amp; Branding page: customize the site title, favicon, logo, cockpit header logo, and LearnDash's accent colors directly from the Cockpit.<\/li>\n<\/ul>\n\n<p>The free plugin works fully on its own; the Pro plugin is detected automatically if installed.<\/p>\n\n<h3>Source Code<\/h3>\n\n<p>The dashboard shown by this plugin is a React application; the JavaScript and CSS files in this plugin's <code>dist\/<\/code> folder are its compiled, minified build output. The uncompiled source and build tooling are published at:<\/p>\n\n<p>https:\/\/download.sevmatic.com\/instructor-cockpit-src\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>sev-instructor-cockpit-for-learndash<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Make sure LearnDash LMS and the \"Instructor Role\" plugin are installed and active.<\/li>\n<li>Instructors can now access their dashboard (see plugin documentation for the dashboard URL\/setup for your site).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20learndash%3F\"><h3>Does this plugin require LearnDash?<\/h3><\/dt>\n<dd><p>Yes, and the \"Instructor Role\" plugin (<code>wdm_instructor<\/code>) for its instructor\/course-ownership logic.<\/p><\/dd>\n<dt id=\"what%20does%20the%20pro%20add-on%20do%20that%20this%20plugin%20doesn%27t%3F\"><h3>What does the Pro add-on do that this plugin doesn't?<\/h3><\/dt>\n<dd><p>Essay and assignment grading, editing\/adding\/deleting users (including their course and group enrollment), a Groups tab for managing group courses\/participants\/leaders, dashboard widgets for open assignments and recent essays, and a Settings &gt; Design &amp; Branding page. Course browsing, participant management, and user lookup are part of the free plugin.<\/p><\/dd>\n<dt id=\"does%20this%20modify%20the%20instructor%20role%20plugin%3F\"><h3>Does this modify the Instructor Role plugin?<\/h3><\/dt>\n<dd><p>No. It hooks into WordPress\/LearnDash independently and leaves the Instructor Role plugin untouched.<\/p><\/dd>\n<dt id=\"where%20do%20instructors%20access%20the%20dashboard%3F\"><h3>Where do instructors access the dashboard?<\/h3><\/dt>\n<dd><p>At yoursite.com\/instructor-cockpit\/ once the plugin is active. This URL isn't currently configurable.<\/p><\/dd>\n<dt id=\"which%20user%20role%20can%20access%20the%20dashboard%3F\"><h3>Which user role can access the dashboard?<\/h3><\/dt>\n<dd><p>Only users with the \"Instructor\" role (<code>wdm_instructor<\/code>, added by the separate \"Instructor Role\" plugin) or Administrators. Regular subscribers\/students don't see it.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20dashboard%27s%20title%20or%20branding%3F\"><h3>Can I customize the dashboard's title or branding?<\/h3><\/dt>\n<dd><p>The dashboard title (shown in the header and browser tab) and the \"Edit in WP Admin\" link text can be customized under Settings &gt; Instructor Cockpit (admin-only). The Pro add-on additionally lets you customize the site title, favicon, logo, and LearnDash's accent colors.<\/p><\/dd>\n<dt id=\"what%20data%20does%20this%20plugin%20store%20or%20track%3F\"><h3>What data does this plugin store or track?<\/h3><\/dt>\n<dd><p>It uses standard WordPress user data (name, email, role) already on your site to power the dashboard, and records each login's timestamp (as <code>last_login<\/code> user meta) to show participant activity (\"last seen\", active\/inactive). No data is sent to third parties.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20deactivate%20the%20%22instructor%20role%22%20or%20%22two-factor%22%20plugins%3F\"><h3>What happens if I deactivate the \"Instructor Role\" or \"Two-Factor\" plugins?<\/h3><\/dt>\n<dd><p>\"Instructor Role\" is required - without it, instructors aren't recognized and the dashboard becomes inaccessible. \"Two-Factor\" is optional - without it, the self-service two-factor setup page on \"Edit Profile\" simply doesn't appear.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.17.0<\/h4>\n\n<ul>\n<li>Course participants who only have access via a group are now marked as such in the participant list.<\/li>\n<li>Fixed adding\/removing a course participant unintentionally also enrolling every group-based participant directly in the course.<\/li>\n<li>Instructors can now open a course on the frontend once it's published or private, or preview it beforehand while it's still a draft, pending review, or scheduled - directly from the course list and its detail page.<\/li>\n<li>Fixed a scheduled (\"Planned\") course's status change not actually taking effect - saving silently left it scheduled instead.<\/li>\n<li>Fixed the structure editor failing to load or save for a course set to Pending Review.<\/li>\n<\/ul>\n\n<h4>1.16.0<\/h4>\n\n<ul>\n<li>Fixed adding\/removing a course participant failing once the course was set to Pending Review.<\/li>\n<li>Fixed the \"Remove\" action on a course participant appearing to succeed but doing nothing when their course access came from a group rather than direct enrollment - it's no longer offered for them, since that's not something removable from the course participant list.<\/li>\n<li>Course titles and the Dashboard's course-progress\/recently-edited lists now get more room instead of the progress bar stretching to fill the row.<\/li>\n<li>The Dashboard's \"Active learners\" chart no longer grows oversized now that its card spans the full width.<\/li>\n<\/ul>\n\n<h4>1.15.1<\/h4>\n\n<ul>\n<li>Corrected the 1.14.0 changelog entry below: the field is called \"Last Login\", shown on a participant's own detail page - only the active\/inactive counts are on the Dashboard.<\/li>\n<\/ul>\n\n<h4>1.15.0<\/h4>\n\n<ul>\n<li>Instructors can now see and change a course's status (Published\/Draft\/Pending Review\/Private) and see its date, directly on the course detail page.<\/li>\n<li>Fixed courses vanishing from every \"my courses\" view (Bausteine, the structure editor, participants, the Dashboard, the course list) once set to Pending Review.<\/li>\n<\/ul>\n\n<h4>1.14.0<\/h4>\n\n<ul>\n<li>A participant's \"Last Login\" field - shown on their own detail page, and used for the Dashboard's active\/inactive counts - is now tracked directly by this plugin on every login, instead of relying on another plugin to set it.<\/li>\n<\/ul>\n\n<h4>1.13.0<\/h4>\n\n<ul>\n<li>Fixed the structure editor's \"available lessons\/topics\" panel, which could show lessons or topics from courses unrelated to the instructor once one of their other courses had none of its own - caused by a scoping bug in the Instructor Role plugin's own lesson\/topic lookup, worked around with our own endpoints.<\/li>\n<\/ul>\n\n<h4>1.12.3<\/h4>\n\n<ul>\n<li>Updated the Pro add-on description: it now also covers assignment grading, user management, group management, and the dashboard's open-assignments\/recent-essays widgets, which had been missing from this list.<\/li>\n<\/ul>\n\n<h4>1.12.2<\/h4>\n\n<ul>\n<li>Corrected the 1.10.0 changelog entry below, which implied the Dashboard's \"recently edited\" list included groups - it only lists courses.<\/li>\n<\/ul>\n\n<h4>1.12.1<\/h4>\n\n<ul>\n<li>Corrected the 1.12.0 changelog entry below, which incorrectly described group participant management - a Pro-only feature - as part of this release.<\/li>\n<\/ul>\n\n<h4>1.12.0<\/h4>\n\n<ul>\n<li>Instructors can now remove a participant from a course directly on its detail page.<\/li>\n<li>Course participant lists split into two, evenly balanced columns once there are more than 5 entries.<\/li>\n<li>Participant rows highlight on hover, and edit-title buttons across the course list, Bausteine list, and structure editor now only show on row hover.<\/li>\n<li>The course participant picker now preloads candidates and filters them instantly while typing, with its pager moved above the list.<\/li>\n<li>The course participant picker's checkboxes are now sized to meet WCAG's minimum touch-target size.<\/li>\n<\/ul>\n\n<h4>1.11.0<\/h4>\n\n<ul>\n<li>Instructors can now set a course's featured image directly from its detail page; the course list's thumbnail links there too.<\/li>\n<li>Course titles, and the Bausteine list's lesson\/topic\/quiz titles, can now be renamed inline without leaving the list.<\/li>\n<li>The courses and users tables now show a total count below the list.<\/li>\n<li>The Dashboard's recently edited courses are now linked to their detail page, and the course-progress table is paged.<\/li>\n<li>Dashboard translations now load through WordPress's standard translation system, so community-contributed translations from translate.wordpress.org take effect.<\/li>\n<li>Fixed a permission check so instructors can only look up users they're already allowed to see.<\/li>\n<li>Fixed the structure editor's two-panel layout collapsing to a single column once the Pro add-on loads.<\/li>\n<\/ul>\n\n<h4>1.10.0<\/h4>\n\n<ul>\n<li>A course's \"last modified\" date now updates when its structure changes, a lesson\/topic\/quiz title changes, or a participant is enrolled - so the Dashboard's \"recently edited\" list reflects those changes too.<\/li>\n<li>The Dashboard's course-progress table is now paged to 10 rows at a time.<\/li>\n<li>Participants who are no longer a member of the site are excluded from Dashboard counts.<\/li>\n<\/ul>\n\n<h4>1.9.0<\/h4>\n\n<ul>\n<li>Added a Dashboard: course overview, participant activity (including a 7-day active-learners trend), and a simplified per-course learning-progress table. With the Pro add-on: open-assignments and recent-essays widgets on the same page.<\/li>\n<li>Published the source code and build tools behind this plugin's dashboard JavaScript (see \"Source Code\" above).<\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li>Added self-service two-factor authentication: set up an authenticator app and generate backup codes from a new \"Edit Profile\" page (Avatar menu &gt; Edit Profile). Requires the separate \"Two-Factor\" plugin.<\/li>\n<li>With the Pro add-on: added a Settings &gt; Design &amp; Branding page \u2014 customize the site title, favicon (with a built-in crop tool), logo, cockpit header logo, and LearnDash's accent colors, all from within the Cockpit.<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>Renamed the dashboard's own URL from \/instructor-dashboard\/ to \/instructor-cockpit\/, matching its \"Instructor Cockpit\" branding.<\/li>\n<li>Improved the mobile menu: it now overlays the page instead of pushing content down, and closes on an outside click or Escape.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Translations can now be contributed by the community via translate.wordpress.org.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Renamed to \"Instructor Cockpit\".<\/li>\n<li>The dashboard title (shown in the header and browser tab) and the \"Edit in WP Admin\" link text can now be customized under Settings &gt; Instructor Cockpit.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added a \"Building Blocks\" tab listing every lesson, topic, and quiz across all of an instructor's courses.<\/li>\n<li>Refreshed the icons throughout the navigation and course structure editor.<\/li>\n<li>Made the Users table usable on mobile screens.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added a visual, drag-and-drop course structure editor: reorder, add, and remove lessons, topics, and quizzes; group final quizzes together; add section headings; undo changes before saving.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added a Users tab with search, sorting, and a detail page for each user.<\/li>\n<li>With the Pro add-on active: edit, delete, and add users directly from the dashboard, and manage their group membership.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Made the course list searchable, sortable, and usable on mobile screens.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Gives LearnDash instructors a dedicated dashboard: their courses, participants, and (with the Pro add-on) grading, user, and group management.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/351442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=351442"}],"author":[{"embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/hfranz"}],"wp:attachment":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=351442"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=351442"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=351442"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=351442"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=351442"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=351442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}