LifterLMS Focus Mode: Distraction-Free Lessons Explained
How to switch on LifterLMS focus mode for the whole site or one course, exactly what it changes on lesson and quiz pages, how it behaves with your…
Read articleLifterLMS course tracks group related courses into a learning path. A track can be a certification programme, a role-based curriculum such as "New manager essentials", or a beginner-to-advanced sequence on one subject. Once courses share a track, LifterLMS can treat the whole path as one unit: it knows when a student has finished every course in it, can lock an advanced course until the path is done, and can award a certificate for the path.
This guide is for course creators and training managers planning a multi-course programme. It explains what tracks do and do not do, walks through setting one up with a prerequisite and a completion certificate, and shows how to display a student's progress through a track. Behaviour described here was checked in the LifterLMS 10.3 source.
Technically, a track is a WordPress taxonomy, like a category. You find it under Courses > Tracks, and you assign courses to tracks from the Course Tracks panel in the course editor. A course can belong to several tracks.
The difference is what LifterLMS does with it. Categories only organize the catalog. Tracks are "completable":
| Feature | Course category | Course track |
|---|---|---|
| Groups courses on an archive page | Yes | Yes |
| Can be nested (parent and child) | Yes | Yes |
| Shown on the course page | Yes | Yes, as "Tracks:" |
| Student progress and completion | No | Yes |
| Can be a course prerequisite | No | Yes |
| Can trigger an engagement | No | Yes |
Use categories for topics that help visitors browse, and tracks for paths that students actually complete. Our guide to organizing courses with categories, tags and difficulty covers the browsing side.
Being clear about the limits saves a lot of rework:
A student completes a track when they have completed every published course in it. Progress is a simple percentage: completed courses divided by courses in the track. Draft courses are ignored.
The calculation runs when the student completes a course. Completing the last outstanding course completes the track, fires the lifterlms_course_track_completed action, and runs any engagements and notifications attached to it. A course in several tracks can complete several tracks at once.
Because the result is stored per student and updated as they complete courses, decide which courses belong in a track before students start it. Adding a course to a track that people have already finished, or removing one, can leave their stored progress out of step with the new structure. If you must restructure a live track, test with a student account that had finished it, and plan how you will handle certificates already issued.
The example below builds a three-course path, Foundations, Practitioner and Advanced, with a capstone course that unlocks only when the path is complete.
The course page now shows "Tracks:" with a link to the track archive at /course-track/practitioner-certification/. The URL base can be changed in the LifterLMS Permalinks section of Settings > Permalinks.
Open the Practitioner course, go to the Restrictions tab of the course options, check Enable Prerequisite, and select Foundations in Choose Prerequisite Course. Do the same for Advanced, choosing Practitioner. Each course now waits for the one before it.
Open the capstone course. Leave it out of the track. In the same Restrictions tab, check Enable Prerequisite and select the track in Choose Prerequisite Course Track. You can set a prerequisite course and a prerequisite track on the same course; the student must complete both.
Students who have not finished the track see a notice on the capstone's course page: "Before starting this course you must complete the required prerequisite track", with a link to the track. Its lessons stay locked with a similar message.
Note what a prerequisite does not block: enrollment. Students can still buy or enroll in the capstone; they just cannot open its content until the track is complete. If buying it early would cause support requests, say so on the sales page or only sell the capstone inside a bundle. For more on how prerequisites and drip interact, see LifterLMS drip content and prerequisites.
Track completion is one of the built-in engagement triggers, so a path certificate needs no code.
The same trigger can send an email or award an achievement badge. LifterLMS also has a built-in "Course Track Complete" notification that congratulates the student on screen and by email; you manage it under LifterLMS > Settings > Notifications. The LifterLMS course track documentation describes the same options.
Test it with a separate student account rather than your administrator account, so you see exactly what a student receives.
Since a track cannot be bought, the usual pattern is a membership that mirrors it:
Buying the membership enrolls the student in all the courses. The track then does the tracking, the prerequisites do the ordering, and the engagement does the certificate. Keep the membership's course list and the track's course list identical, or students will finish one but not the other. Our article on course bundles and upsells covers pricing the bundle against individual courses.
Core shows progress per course, on the course page and the student dashboard, but has no built-in "track progress" display. A small shortcode fills the gap. It uses the real LLMS_Track and LLMS_Student classes:
<?php
/**
* Plugin Name: LLMSX Track Progress
* Usage: [llmsx_track_progress track="practitioner-certification"]
*/
add_shortcode( 'llmsx_track_progress', 'llmsx_track_progress_shortcode' );
function llmsx_track_progress_shortcode( $atts ) {
$atts = shortcode_atts( array( 'track' => '' ), $atts );
$student = llms_get_student();
$term = get_term_by( 'slug', sanitize_title( $atts['track'] ), 'course_track' );
if ( ! $student || ! $term ) {
return '';
}
$track = new LLMS_Track( $term );
$courses = $track->get_courses();
$percent = $student->get_progress( $term->term_id, 'course_track' );
$html = '<div class="llmsx-track-progress">';
$html .= '<p>' . esc_html( sprintf( '%s: %s%% complete', $track->get_title(), $percent ) ) . '</p><ul>';
foreach ( $courses as $course ) {
$done = $student->is_complete( $course->ID, 'course' );
$html .= sprintf(
'<li>%s <a href="%s">%s</a></li>',
$done ? '✓' : '○',
esc_url( get_permalink( $course ) ),
esc_html( get_the_title( $course ) )
);
}
$html .= '</ul></div>';
return $html;
}
Place it on the track description, a welcome page or a custom dashboard tab. Courses are listed in the order WordPress returns them, which is by date, not your learning order; if order matters, sort them by a value you control, such as the course menu order.
Not directly. Create a membership with the track's courses as auto-enrollment courses, and sell that.
Yes. Completing it counts towards every track it belongs to.
Each track has its own archive page listing its courses, using the catalog's sorting and pagination. Link to it from menus or landing pages.
Core reporting is organized by course, membership and student, not by track. Completion of a track is recorded, and engagements fire on it, so a certificate or a CRM tag set by an engagement is a practical way to track it. A dedicated track report is custom development.
Sketch the path on paper first: which courses, in which order, what unlocks what, and what the student receives at the end. Then build it in this order: track, course assignments, prerequisites, certificate engagement, and finally the bundle membership if you sell the path as one product.
If your programme needs things core does not provide, such as track reports for managers, a path progress page in the student dashboard, or CE credits that add up across a track, our LifterLMS development service builds those on top of tracks without changing core files. Contact us with an outline of your programme and we will suggest the leanest way to deliver it.
How to switch on LifterLMS focus mode for the whole site or one course, exactly what it changes on lesson and quiz pages, how it behaves with your…
Read article
LifterLMS 10.3 added a Customers screen under Orders. Here is what each number means, how the five segments are calculated, and practical ways to use…
Read articleHow the lesson time tracking added in LifterLMS 10.1 works: setting a minimum time on a lesson, what students see, where Time in Course appears in…
Read articleSkip the trial and error. Get specialist LifterLMS help and ship faster.