The LifterLMS Course Catalog: Setup, Sorting and Custom Layouts
Set up the LifterLMS course catalog page, control sorting, pagination and which courses appear, then customize the course tiles with shortcodes…
Read articleIf your site runs a block theme, such as Twenty Twenty-Five or LifterLMS's own Sky Pilot, you design your LifterLMS pages in the Site Editor rather than the Customizer. LifterLMS supports this: it adds its own templates to the Site Editor and provides blocks for course pages, lessons and navigation.
This tutorial is for site owners and designers working with a LifterLMS block theme setup. It shows which LifterLMS templates appear in the Site Editor, how to build templates for single courses and lessons, which parts still come from PHP templates, and how a developer can ship custom LifterLMS block templates with a theme.
It was checked against LifterLMS 10.3. The Site Editor's menus have moved between WordPress versions, so the path may differ slightly on yours. For the blocks themselves, see our LifterLMS Gutenberg blocks guide.
LifterLMS checks whether the active theme is a block theme using WordPress's own test. When it is, LifterLMS registers its block templates and uses them instead of its PHP page templates for catalogs and restricted content. Developers can override that check with the llms_is_block_theme filter, but on a normal site you never need to.
Nothing changes in your courses, students or settings when you switch between classic and block themes. Only the way pages are framed and laid out changes.
Open the Site Editor (Appearance > Editor) and go to Templates. With LifterLMS active you will find these:
| Template | Used for |
|---|---|
| Course Catalog | The courses page and course archive |
| Membership Catalog | The memberships page and archive |
| Single Access Restricted | Lessons, quizzes and other content a visitor cannot access |
| Taxonomy Course Category, Difficulty, Tag and Track | Course taxonomy archives |
| Taxonomy Membership Category and Tag | Membership taxonomy archives |
Each one is short: the theme's header template part, a group containing a LifterLMS PHP template block, and the footer template part. In the editor the middle block is labelled with its purpose, for example "LifterLMS Course Catalog Template".
You can change everything around that block: add a hero with a heading and intro text, a search block, a call to action, a different header, or a sidebar column. You cannot edit the course tiles themselves as blocks. The PHP template block prints LifterLMS's catalog loop, and the tiles come from PHP templates such as loop/content.php. To change what a tile shows, use hooks or a template override.
If you would rather build the catalog entirely from blocks, replace the PHP template block with the LifterLMS Courses block, or with a core Query Loop on the Course post type. A Query Loop gives you full layout control but not LifterLMS's enrollment-aware details such as progress on each tile.
When you save a LifterLMS template in the Site Editor, WordPress stores your version in the database and uses it instead of the file that ships with the plugin. LifterLMS updates will not overwrite your edits. That cuts both ways: if a future LifterLMS version improves a template, your customised copy will not pick up the change. Use the Site Editor's reset option on a template to return to the plugin's version.
LifterLMS does not add single course or lesson templates. Courses and lessons use your theme's single template by default, and the LifterLMS elements come from the post content.
That content is where the blocks live. When you edit a course in the block editor, LifterLMS adds its course blocks to the content: Course Information, Instructors, Pricing Table, Course Progress, a continue button and Course Syllabus. Lessons get Lesson Progression (the Mark Complete button) and Lesson Navigation. You can move, remove and restyle those blocks per course.
To give every course or lesson its own frame, create a template for that post type in the Site Editor's add template screen, where WordPress lists a single item template for each public post type, including Courses and Lessons.
Because the course and lesson blocks live in each post's content, the template controls the frame and the post controls the LifterLMS elements. That split is what keeps your templates simple.
Block themes have no widget areas, so the Course Sidebar and Lesson Sidebar that LifterLMS registers for classic themes do nothing here. Build sidebars inside your templates with blocks, such as Course Outline, Course Progress with Continue Button, or a custom pattern.
A few LifterLMS screens use fixed PHP templates even in a block theme, on purpose:
The LifterLMS Link block works inside the core Navigation block. It adds dynamic links to student pages: Dashboard, My Courses, My Grades, My Memberships, My Achievements, My Certificates, Notifications, Edit Account, Redeem a Voucher, Order History, Sign In and Sign Out. Use it in your header template part so logged-in students always have a route back to their courses.
LifterLMS blocks also carry visibility settings, so you can show a "Sign In" link only to logged-out visitors and "My Courses" only to logged-in users. Test those as both before publishing the header.
A theme can provide its own versions of LifterLMS's block templates, the same way it overrides PHP templates. Put an HTML file with the same name in a block-templates folder inside the theme's lifterlms folder:
your-theme/
lifterlms/
block-templates/
archive-course.html
A minimal catalog template with a heading above the LifterLMS loop looks like this:
<!-- wp:template-part {"slug":"header","tagName":"header"} /-->
<!-- wp:group {"tagName":"main","layout":{"type":"constrained"}} -->
<main class="wp-block-group">
<!-- wp:heading {"level":1} -->
<h1 class="wp-block-heading">All courses</h1>
<!-- /wp:heading -->
<!-- wp:llms/php-template {"template":"archive-course"} /-->
</main>
<!-- /wp:group -->
<!-- wp:template-part {"slug":"footer","tagName":"footer"} /-->
Customisations saved in the Site Editor still take priority over the file, so if your change does not appear, check whether someone has edited that template in the database. Developers who need deeper control have filters such as llms_block_templates_config for registering template directories and llms_forced_block_template_slug for choosing which template loads.
Yes. LifterLMS adds catalog, taxonomy and restricted-access templates to the Site Editor and provides blocks for course pages, lessons and navigation.
The tiles are printed by a LifterLMS PHP template block. Change them with hooks or a template override, or replace the block with the Courses block or a Query Loop.
No. Any block theme works. Sky Pilot is LifterLMS's own paid block theme with LifterLMS pages pre-styled.
They are widget areas, which block themes do not have. Build sidebars in your templates with blocks instead.
On staging, open the Course Catalog template and add a heading and intro, then create single course and lesson templates with a post content block and a Course Outline sidebar. Test as a visitor, an enrolled student and a student with a locked lesson.
If you are moving an existing classic-theme course site to a block theme, our LifterLMS customization service handles the templates, patterns and overrides, and our migration service covers moving the content safely. Tell us which theme you are moving to.
Set up the LifterLMS course catalog page, control sorting, pagination and which courses appear, then customize the course tiles with shortcodes…
Read article
How the LifterLMS pricing table decides what to show, how to place it with the Pricing Table block or shortcode, how to structure plans that convert…
Read article
Every LifterLMS block in the WordPress block editor, what each one shows, where it works, how enrollment visibility controls work, and practical…
Read articleSkip the trial and error. Get specialist LifterLMS help and ship faster.