A few people have asked me if I could create a “dark mode” for LearnDash’s focus mode. The answer is yes, but it does come with a few caveats. Overall though, I was able to replicate the same colors in YouTube’s dark mode and apply them to the LearnDash Focus Mode experience.
If you’re interested in using a dark mode with LearnDash, I’ll provide you with the custom CSS below.
In today’s world, shared accounts are commonplace. I bet if you asked 10 friends if they’ve ever used someone else’s Netflix or Amazon account, at least half would say yes. That might not be a huge deal for a company as big as Netflix—with 138 million paid subscribers (source) and $15.8 billion in revenue in 2018 (source)—but for your small business selling online courses, it matters.
You’ve worked hard to create an online course that provides value to your students. The last thing you want is for students to share login information with a friend, who then gets to take your course for free.
This article will outline how you can prevent students from sharing login information for your LearnDash site (or any WordPress membership or LMS). So far, I’ve identified three different solutions, which I’ll outline below:
Social login – require a user to connect via Facebook, LinkedIn, Google or another account that they wouldn’t want anyone else to access
There is no guaranteed way to prevent multiple students from sharing login information. You can make it more difficult, but you can’t completely prevent it from happening.
Should You Prevent Students from Sharing Logins?
Before implementing a solution, I encourage you to consider if it’s worth it. I understand your desire to get paid for your work. You’ve spent hours creating awesome content. You deserve to be compensated and not taken advantage of.
But did you ever wonder why even the biggest online giants (Google, Netflix, Amazon, Spotify, etc.) don’t prevent the sharing of login information?
They certainly have the resources. They could probably have it up-and-running in half a day. And yet, while most of them employ some form of advanced security (email notifications of suspicious logins, security questions, backup phone numbers, two-factor authentication, etc.), none of them completely prevent anyone from sharing login information.
I suspect there are at least two reasons, both of which you should consider for your LMS:
They want you to be able to login from anywhere, at any time (because we travel, and demand convenience). How would they truly know if it’s you trying to login, or one of your friends?
They want logging in to be as easy & seamless as possible, so that you come back and use the service. If you had to go through extensive verification every time you logged into Amazon, would you find somewhere else to shop?
Hopefully, you’ve given it some thought. If you’d like to explore the options, here we go…
☝ Only Allow One Login Per Account, at a Time
This method will prevent simultaneous logins with the same account. A student could still share their login information with a friend, and as long as the real student is logged out, the friend could log in.
If your courses are released on a specific schedule, or only run for a short period of time, this could be an excellent option. Because all students need to complete the course at the same time, this method would only allow one person to be logged in, taking the course, at a time.
The WP Bouncer plugin will take care of everything behind the scenes.
User A logs in as “student”
User B then also logs in as “student”
The next time User A tries to load a new page, they are kicked out
User B continues to use the site
If User A logs back in again, User B is kicked out
They could continue this pattern indefinitely. I think the idea is to show both users (the paid student & the “free friend”) that it’s not worth it. They’ll keep booting each other out and neither will be able to use the site freely.
Of course, if they communicate their schedules, and make sure one is always logged out before the other logs in, they’ll be able to get around it. Thus why this is more of a deterrent than a complete solution.
Options & Filters
By default, the user who gets kicked out will see a warning message:
However, if you know how to use WordPress hooks, there are a few filter hooks available.
ignore admins (allow admin accounts to be logged into simultaneously)
custom redirect URL (upon logout)
change the number of simultaneous logins allowed
📱 Enable Two-Factor Authentication (2FA)
A slightly more advanced option is to use two-factor authentication (2FA). This method takes a different approach than the WP Bouncer plugin. With 2FA, each time a user tries to login to their account, they will need three things:
username or email address
a one-time, randomly-generated code sent to a single device
KEEP IN MIND
This method will make it more difficult to login—not just for the mooch who is trying to access your course for free, but also for the person who paid for it.
The additional code is typically a 4-6 character code sent via email, SMS text message, or generated via an app on a user’s smartphone. It is only valid for a very short period of time (30 seconds to 5 minutes), before a new code is needed.
There are also some two-factor authentication apps you can install on your phone, and simply tap a button to confirm your login.
Technically, a student could receive a 2FA code on their phone, and still have time to share it with a friend, who could then login. But because of the short lifespan of the code, the student and friend would need to be in immediate communication with one another.
With LearnDash & WordPress, there are multiple plugins that enable two-factor authentication. I recommend you read through the details of each, and choose the one that works best for you.
Two-Factor – A super-simple plugin that could eventually get merged into WordPress core. Limited options.
If you already use the premium version of either iThemes Security or Wordfence, they both offer two-factor authentication as well. You might want to consider using their options before installing another plugin.
👥 Social Login
Personally, I’m not a fan of requiring a user to authenticate with a third-party service. Some users might not have a Facebook account, or just don’t want to connect Facebook with yet another application (Facebook isn’t necessarily known for protecting your data 🤨).
However, most students would not be comfortable providing access to a very personal social media account. If you required them to connect to a social account when they log in, it’s unlikely they would share this access with anyone else.
Social Login Plugins
There are quite a few social login plugins to choose from, but I’d probably recommend this one:
I haven’t personally used it, but I’ve done some research, and it appears to be the best all-around option. Please let me know if you’ve used it, or have other recommendations.
I certainly realize the desire to prevent the sharing of login information, but you should consider if it’s worth the added frustration it could cause to your actual students. If you decide to implement something, keep a close eye on any student feedback you receive.
If you have another suggestion for how to prevent multiple logins on the same account, please share it in the comments.
I’ll briefly outline below how I made this happen, but here’s a video explaining how I set up a certification track in LearnDash. If you need to offer a certificate after the completion of multiple courses, this is for you.
Award a certificate after completing multiple courses in LearnDash
With LearnDash, it’s easy to award a certificate upon completion of one course. You can also easily provide a certificate upon completion of a quiz.
However, if you need to award a certificate upon completion of multiple courses, it’s not as easy. Here’s the best way I found how to award a certificate after completing several courses.
Creating a New Course for Just the Quiz
Create a new course that just contains one quiz
Set the course to FREE (this makes the course page viewable to everyone, but you have to be logged in to access it)
Set course prerequisites for this course (in my case, 3 courses had to be completed in order to take a final exam to get the certificate)
Apply your certificate to this course
Creating the Quiz
Now create the quiz and place it within this course
No prerequisites for the quiz
DO NOT apply any certificates to the quiz
(optional) Add in a completion percentage in order to pass the quiz (ex: they need to score a 70% or higher to pass the quiz)
This prevents them from accessing the certificate until they have scored a 70% or higher.
Use Shortcodes to Enhance the Experience
I also used some shortcodes & messages to help enhance the experience.
Place a message at the top of each prerequisite course that only shows up for those who have completed it [course_complete] message [/course_complete].
I provided a link to the final exam course, as well as a link to purchase any other courses that they might not have bought yet (example: If they only bought 1 of the 3 courses in the certificate track, they’ll have a link to buy the other 2).
If you have another way of setting this up, or any creative idea for achieving the same thing, I’d love to hear it. Please share in the comments.
By default, when a visitor—anyone not logged in to your site—lands on a LearnDash course page and tries to click a link in the course content table (it could be to a lesson, topic or quiz)… the page just reloads.
LearnDash has built-in course protection, so this is in place to stop a random visitor from accessing a course that they don’t have access to. The problem is that it redirects them back to the same page they are already on, essentially just reloading the course page.
This is less than ideal. But there’s a simple way to redirect these clicks on the course content table to any page of your choice:
a login page
a sales page powered by an ecommerce or membership plugin
This does involve a little PHP code, but don’t let it intimidate you. I’ll walk you through it.
Use the Code Snippets Plugin
The Code Snippets plugin is an alternative to adding code to your theme’s functions.php file. I believe it’s a much safer and more organized way to maintain code, especially for beginners and non-coders.
We’ll be using this plugin to implement the code to redirect clicks on the course content table.
It’s a good idea to use this plugin for ALL future PHP code snippets that you would otherwise put in your functions.php file. And please don’t worry about plugin overload or “Ugh, I really don’t want to add another plugin to my site…” Code Snippets will not slow down your site.
Install & Activate the Plugin
In your WordPress admin area, navigate to Plugins > Add New
Search for “code snippets”
Install & activate the plugin (author: Shea Bunge)
Code for Course Content Table Redirects
Now that you’ve got the right tool in place, let’s add the code to actually implement our redirect.
Navigate to Snippets > Add New
Give your snippet a title. This is just internal naming, so choose anything you’d like.
In the “Code” section, we’re going to add the following:
Where it says https://learndash.com/, you would change that to the page on your site that you want to redirect people to. For example, it could be:
https://yoursite.com/login/ – if you’re using a custom login page
https://yoursite.com/product/name-of-product/ – if you’re using an ecommerce platform like WooCommerce
https://courses.yoursite.com/enroll-today/ – if you have one general sales page for all of your courses (perhaps you used a page builder to create a custom landing page, and are hosting your courses on a sub-domain)
The possibilities are endless. You can use any URL in the world! 🌏
(Optional) Description & Tags
It’s totally optional, but you can give your code snippet a description and/or some tags. These are just for internal organization, so use them as you’d like… or not at all.
Run on Front-end Only
The final option is WHERE you’re going to allow this code to run. You can run it in the admin area, the front-end of your site, or both.
Choose Only run on site front-end
Because this code only applies to site visitors accessing your LearnDash course content table, there is no need to have it executed in the admin area. So just choose to run it on the front-end only.
Save & Activate
The final step is to click the “Save Changes and Activate” button at the bottom. Then navigate to a course page in a private browsing window (or logout of your current session) and click a link in the course content table. It should redirect you to the URL that you specified.
When you use the LearnDash course navigation widget, and navigate to a lesson, topic or quiz page, you’ll see a “Return to [Course]” link appear at the bottom. No surprise, this brings you back to the course page.
But what if you wanted to customize the “Return to [Course]” link?
🚫 Hide the “Return to” part and just display the course title?
👈 Add a back arrow before the course title?
👆 Move the entire link to the top of the navigation?
Do you offer a lot of similar courses? Wouldn’t it be great if you could just clone one and start from a template? Well, thanks to a few different LearnDash add-ons, now you can.
There are 3 plugins that offer the ability to clone LearnDash content, and each one provides a different set of features. One plugin can do it all, but it’s not free. The other 2 options are free, but each have some drawbacks. I’ll evaluate the options & help you choose the best one for your situation.
The LearnDash progress bar does an OK job at visually representing a student’s progress, but there are ways to improve it. If you have 50 or more steps in your course, the progress bar itself might not be the best indicator.