LifterLMS and Divi: Building Course, Lesson and Membership Pages
What works out of the box when you use Divi with LifterLMS, what needs the free Lifti lab, how to keep the syllabus and Mark Complete button where…
Read articleBeaver Builder has the most complete page builder integration in LifterLMS. Since LifterLMS 8.0 it is part of the free core plugin: course, lesson and membership modules, visibility rules based on enrollment, and starter layouts. It used to be a separate lab in the LifterLMS Labs plugin.
This guide is for site owners, designers and developers building LifterLMS pages in Beaver Builder. It lists every module, shows how the visibility settings work, explains what happens to existing courses when you open them in the builder, and covers the limits we test for on every build. The Elementor and Divi guides cover the other two common builders.
Behaviour described here was checked in the LifterLMS 10.3 source code. The LifterLMS Beaver Builder documentation notes that it works with Beaver Builder Lite or Pro.
If your site has used Beaver Builder with LifterLMS for a while, check LifterLMS > Labs. When the old Beaver Builder lab in LifterLMS Labs is enabled, the integration in core steps aside and the lab's code runs instead. On LifterLMS 8.0 or later, disable that lab so you get the maintained core version, then test a few existing pages. The module names are the same, so layouts built with the lab keep working.
The core integration only loads when Beaver Builder is active. It also enables the builder for Courses, Lessons and Memberships by default, and removes Quizzes and Questions from Beaver Builder's post type list, because those are rendered by LifterLMS and edited in the course builder.
In the builder, the modules sit in a LifterLMS Modules group. Some are only offered on the post type they make sense on.
| Module | What it shows | Where it is available |
|---|---|---|
| Course Information | Length, difficulty, tracks, categories and tags | Anywhere; pick a course or leave blank for the current one |
| Course Author | Name, avatar and optional bio of the course author | Anywhere; pick a course or use the current one |
| Course Continue Button | Progress bar and a button to the student's next lesson | Anywhere; pick a course or use the current one |
| Pricing Table | Access plans for a course or membership | Anywhere; Product Type set to current, a course, or a membership |
| Course Instructors | Instructors of the current course | Courses only |
| Course Syllabus | Sections and lessons of the current course | Courses only |
| Course Progress Bar | Progress bar for the current course | Courses only |
| Lesson Mark Complete Button | Mark Complete or Mark Incomplete, or Take Quiz when a quiz is attached | Lessons only |
| Membership Instructors | Instructors of the current membership | Memberships only |
The modules that take a course setting are useful on landing pages. A home page can show a featured course's information, author and pricing table without duplicating that content by hand.
This is the feature that makes Beaver Builder attractive for course sales pages. Every row and module has a Visibility setting on its Advanced tab. LifterLMS adds two options to Beaver Builder's usual list:
Choose one and further fields appear:
A typical course page uses two rows. The first is set to Non-Enrolled Students and Visitors and holds the sales copy, testimonials and pricing table. The second is set to Enrolled Students and holds a welcome message, the continue button and the syllabus. One URL then works as both the sales page and the course home.
Two details from the code are worth knowing. On a lesson, "current course" means the lesson's parent course. On pages and posts that are not courses or memberships, the current option has nothing to check, so use Any or Specific there.
The first time you open a course, lesson or membership in Beaver Builder, LifterLMS adds a starter layout below whatever is already there:
When you publish from the builder, the post is marked as migrated. From then on LifterLMS stops printing those same elements through its default template hooks, so the modules are the single source and you can move or delete them without getting duplicates. On a lesson only the Mark Complete button moves into a module; the lesson navigation is still added by LifterLMS.
There is also a fuller "LifterLMS Course" layout under LifterLMS templates in the builder's Templates panel, which you can apply when starting a course design from scratch.
If you would rather start from your own saved layouts, the starter rows can be switched off with the llms_beaver_builder_should_migrate_post filter. Do that only if you also have a plan for the default elements, otherwise they stay on and appear below your design.
<?php
// Skip the LifterLMS starter layout for memberships only.
add_filter( 'llms_beaver_builder_should_migrate_post', 'llmsx_bb_skip_membership_layout', 10, 2 );
function llmsx_bb_skip_membership_layout( $migrate, $post_id ) {
if ( 'llms_membership' === get_post_type( $post_id ) ) {
return false;
}
return $migrate;
}
This is the one to understand before launch. When Beaver Builder is enabled on a course or membership page that LifterLMS would otherwise restrict, for example a course limited to members of a membership, LifterLMS lifts the page-level restriction. The design assumption is that you control access with the enrollment visibility settings on your rows and modules.
So if a builder-enabled course should be members-only, set every row that holds protected material to Enrolled Students. Lessons are not affected: a locked lesson is still locked, and LifterLMS shows its normal no-access page. Course pages are usually sales pages anyway, but check this on any site that relies on membership restrictions.
You design lesson content in the builder. Drip schedules, prerequisites, quizzes, time requirements and navigation stay in LifterLMS. Since 10.3 the course builder recognises Beaver Builder lessons and will not overwrite their content from its own lesson editor, so edit lesson text in Beaver Builder and structure in the course builder.
The modules output standard LifterLMS markup and mostly have no design controls of their own. Expect to add CSS for buttons, the syllabus and access plans. Target LifterLMS classes such as .llms-access-plans and .llms-syllabus-wrapper, not Beaver Builder's generated node IDs, which change when a module is recreated.
If you use the Private Areas add-on for one-to-one coaching, the integration already stops Beaver Builder from replacing a private area's content with the course or membership layout. No extra work is needed.
LifterLMS does not document Beaver Themer specifically. If you build singular Themer layouts for lessons or courses, include a Post Content module, because LifterLMS adds its default elements through the post content. Test a locked lesson and an open one before rolling a layout out.
No. The integration has been in core since LifterLMS 8.0. Keep Labs only for other labs you use, and disable its Beaver Builder lab.
The LifterLMS documentation says the integration works with Lite or Pro. Lite has limits of its own, so check Beaver Builder's plan comparison for anything you need beyond the LifterLMS modules.
Yes. Set rows or modules to Enrolled Students or Non-Enrolled Students and Visitors, with In set to the current course.
No. Quizzes and questions are removed from Beaver Builder's post types on purpose. Style quizzes with CSS or template overrides.
On staging, disable the old Labs lab if it is on, open one course in Beaver Builder, and build the two-row pattern: sales content for visitors, course home for students. Test with a visitor, an enrolled student and a member of any restricting membership. Then save that layout and reuse it for the rest of the catalog.
If your site depends on membership restrictions, or you want a reusable course layout built and styled once in a child theme, our LifterLMS development service can do it, and our support plans cover testing after updates. Get in touch with a link to the page you want to rebuild.
What works out of the box when you use Divi with LifterLMS, what needs the free Lifti lab, how to keep the syllabus and Mark Complete button where…
Read article
How the free LifterLMS Elementor widgets work, what happens when you open an existing course in Elementor, where Elementor Pro’s Theme Builder fits…
Read article
How to set up PayPal for LifterLMS with the PayPal Payments add-on, how recurring payments work with and without Reference Transactions, how to test…
Read articleSkip the trial and error. Get specialist LifterLMS help and ship faster.