Hi, I’m Anika! I specialize in building WordPress LMS (Learning Management System) sites, and today I’m pulling back the curtain on a unique project I recently completed. This particular build showcases how you can create a custom learning experience without relying on traditional LMS plugins. Instead, I used a powerful combination of Memberium, Keap, Elementor Pro, and JetEngine to bring it all together.
Let me walk you through the approach, tools, and why I built it this way — especially if you’re considering an LMS setup that doesn’t quite fit into the typical mold.
The Challenge: A Custom Fitness Program, No LMS Plugin Needed
My client runs a fitness program and needed a simple yet effective platform where members could:
- Access training videos and resources
- Track their progress
- Easily see what’s available vs. what’s locked
No forums, no quizzes, no complex course structures — just clean, straightforward delivery.
Most LMS plugins (like LearnDash or BuddyBoss) come with great features, but they can be too rigid for specific program needs. In this case, the client wanted complete control over layout and functionality without the extras. That’s where Memberium, JetEngine, and Elementor Pro came in.
Member View: Dynamic Access Indicators
Once members log in, they see a dashboard of available programs and resources. Each training module or workout shows an “Access Now” button if they have access, or a lock icon if they don’t.
Here’s what’s cool: this isn’t hard-coded. It’s completely dynamic using JetEngine listings and Memberium shortcodes.
Let’s say a member wants to access a 14-Day Fitness Challenge. If they have the right tag in Keap, they see the “Access Now” button. If not? They see a lock icon and a prompt to enroll.
How It Works: Memberium + JetEngine Magic
Let me break it down.
Each program, workout, and resource is a custom post type listing created in JetEngine. For access control, I use Memberium’s has_any_tag
shortcode inside a JetEngine dynamic listing.
Example:
[memberium_has_any_tag tagid="CUSTOM_FIELD_TAG"]
Show this Elementor template (Access Now button)
[else]
Show this template (Lock button)
[/memberium_has_any_tag]
The CUSTOM_FIELD_TAG
is pulled from a custom field assigned to each program. This makes it super flexible — I can easily manage access across different listings without writing extra code.
Dynamic Progress Tracking (Without an LMS)
Another powerful feature I added was progress tracking using JetEngine’s Data Stores. Members can mark each day’s workout as “complete,” and it shows a checkmark next to that day on their program dashboard.
This is something that traditional LMS plugins usually handle — but with JetEngine, I have full control over the design and placement of progress indicators. Plus, I’m not locked into the LMS’s default layout.
Why Build It This Way?
When it comes to LMS or membership sites, one size does not fit all.
- Some programs need complex course structures.
- Others, like this fitness program, just need clean delivery and flexible access control.
Using Memberium allows granular control over content visibility with its extensive shortcode library. Pairing it with JetEngine opens up endless possibilities for custom layouts, dynamic content, and progress tracking — all without the bloat of a traditional LMS plugin.
Final Thoughts
If you’re building an e-learning or membership site, remember:
Start with your program’s unique needs — not just what a plugin offers out of the box.
This approach gave my client a lightweight, flexible, and scalable platform that’s fully tailored to their audience.
I’ll be sharing more in upcoming posts — including a deep dive into JetEngine Data Stores and other custom features I built for this site. Stay tuned!
Tools & Plugins that used
- Crocoblock JetEngine
- Memberium for Keap