Hey there! In this post, I’m pulling back the curtain on a recent project I built using WordPress, Elementor, Memberium, Keap, and some powerful tools from JetPlugins (also known as Crocoblock). I’ll walk you through how I crafted a completely custom LMS (Learning Management System) experience for a 14-Day Challenge program — including the dynamic checklist feature and how the content is structured behind the scenes.
Let’s dive in!
Building the Custom Challenge Page Layout
Preview Settings & Featured Image Fallback
When building JetEngine listings, I recommend setting a preview width to visualize how your list will look in tight spaces. I designed the layout to look like neat boxes using featured images with a fallback in case no image is assigned. I also added a dark purple background layer behind the images for better visual continuity during slow load times — ensuring it never appears “blank.”
Dynamic Progress Tracker Using Data Store
One standout feature I added was a progress tracker using JetEngine’s Data Store functionality.
Here’s how it works:
- Each checklist item can be added to or removed from the store by the user.
- Labels dynamically update after items are added or removed (e.g., “Added to Checklist” or “Remove from Checklist”).
- This is managed via JetEngine’s User Meta Store, and in this case, I capped it at 14 items since it’s a 14-Day Challenge.
JetEngine’s documentation is quite detailed if you want to explore more advanced Data Store setups. I plan to create in-depth tutorials for this, so stay tuned!
Conditional Display with Memberium Tags
Another feature I integrated is conditional display using Memberium’s shortcode for tag-based logic:
[memb_has_any_tag tagid="XYZ"]
<!-- Show content -->
[/memb_has_any_tag]
Here’s how it works:
- I use dynamic fields to pull tag values from custom fields.
- Memberium checks if the logged-in user has the specific tag, and then I use if/else logic to display relevant content.
- This allows for tailored member experiences based on their progression.
Custom Post Types for Program Flexibility
Instead of relying on a rigid LMS plugin like LearnDash, I created a custom post type specifically for this 14-Day Challenge (and other programs like 8-Week Postnatal and 4-Week Kickstart). Here’s why:
- The programs are modular but varied in structure.
- Creating a custom post type allowed maximum flexibility for managing different challenge formats without cluttering the main LMS.
Admin-Friendly Content Management
To keep things simple for admins, I designed a workflow where they never need to touch Elementor templates:
- All challenge data (videos, downloads, checklists) is managed via custom fields.
- Admins simply enter content in the backend; the front-end design auto-updates via Elementor templates.
- This prevents accidental design changes and ensures consistency across all challenge days.
Example: To add more exercise videos, admins just click “Add Item” under “Exercise Videos” in the dashboard, fill out the details, and it appears on the front end — no builder needed.
Dynamic Resource Listings
On the main program page, I included:
- A Welcome Video
- Mindset and Nutrition Videos (added directly in Elementor for simplicity)
- A listing of challenge days (using JetEngine’s listing feature, 4 columns, 14 items)
- A Resources section which pulls specific WordPress pages by post ID (not custom post types) using manual post queries.
Member Experience Example: Day One Page
From the member’s view, a Day One page includes:
- A welcome video
- A checklist with completion tracking
- Downloadable files
- Workout videos (e.g., Warm-Up, Cool Down)
Again, this entire layout is managed by an Elementor template linked to the custom post type fields — making it seamless for content updates without affecting the design.
Why Go Custom?
You might ask, “Why not just use LearnDash or another LMS plugin?” Simple: Custom programs require custom solutions.
With a completely custom setup:
- You control the member experience.
- You’re not limited by LMS plugin restrictions.
- You design workflows exactly how your program needs them to function.
Final Thoughts
If you’re considering building your LMS site, remember:
You know your program better than anyone else. Tailor your site to deliver the experience you envision for your members.
I’ll be diving deeper into specific features like the Data Store, dynamic listings, and tag-based access control in future videos and posts.
Got any specific questions? Drop them in the comments, and I’ll do my best to answer them!
Thanks for reading — see you in the next one!
Tools & Plugins that used
- Crocoblock JetEngine
- Memberium