Introducing the Uncanny LearnDash Toolkit

We are very pleased to announce the Uncanny LearnDash Toolkit, our very first plugin in the WordPress repository. This plugin is a collection of some of the key basic features we see requested on LearnDash sites that usually require a custom solution. We created this plugin to make it easier for general LearnDash users to get a head start with their LearnDash sites.

The plugin, at least for its initial release, makes it easy to do the following:

  • Add a clean login form to any page so you don’t have to rely on wp-login.php.
  • Force user verification, so users can create accounts but can’t sign in until approved by an administrator.
  • Hide the admin bar for WordPress roles of your choice.
  • Add a button anywhere that lets users resume their most recently viewed course, lesson or topic.
  • Display a user’s list of LearnDash Groups in their user profiles.
  • Redirect users to a specific page after logging into the site.
  • Mark lessons as complete automatically when all topics and quizzes within the lesson have been marked complete.
  • Hide or show menu items based on the user’s signed-in state.
  • Display a list of earned LearnDash certificates.
  • Show or hide content based on a user’s signed in state.
  • Display a list of certificates in a widget.

Yes, it’s a lot of functionality. We designed it to be lean though, and it’s really easy to turn on only the specific features you need. Every feature has an on/off switch so you can use the plugin  as much or as little as you want. For the developers out there, we’ve added some hooks and translation features that should make your customizations easy (we’ll follow up with another post with some of the cool things you can do with filters).

Uncanny LearnDash Toolkit

Before I jump into a detailed overview of each feature and how to use it, there are 3 very important things to remember. First, this is the first release of a complex plugin, so there could be issues. We invite feedback, and in fact, we’ll be opening up the git repository so you can suggest changes. Second, the plugin offers a lot of capabilities, so to maximize performance, we made it possible (and easy) to turn functions on and off. By turning functions off the associated code will not run and there won’t be any performance hit; as such, we recommend turning features off that you don’t need. Third, very little styling is included so that the plugin styles inherit whatever has been set up for the theme and LearnDash. Our aim was to keep things consistent with your current system and easy to style with CSS rather than introduce new styles.

With that out of the way, here’s a video that outlines exactly how the plugin works and how to use each of the features included in it.

Detailed Feature Overview

Front End Login

Front_End_Login

This function lets you put login forms anywhere on your WordPress site; it also allows you to restrict access to verified users. To use this feature, turn it on so that the green ON switch is displayed. Once enabled, several features become available: a [uo_login] shortcode for login from any page; a [uo_login_ui] for the default login page (which replaces wp-login.php and must be defined in the feature settings) and user verification.

Let’s start with verification. If enabled in the Settings (click the Gear icon to turn this on), users that register from the front end MUST be manually approved by an administrator before they can sign in. This field must be checked for it to work. Once set and saved, a “Verified” column will be added to the list of users in WordPress. Any users listed as “Not Verified” cannot sign into WordPress. To verify a user, navigate to the user’s profile and look for the “Verify User” label. By selecting this field and saving the page, the users will be able to sign in. On verification, users will also be notified by email that the account has been verified and access has been granted. If you turn this feature on, make sure you verify all existing users, including administrators!

The [uo_login_ui] shortcode allows you to replace the default wp-login.php page with your own branded page. To set this up properly, we recommend creating a page first and adding the [uo_login_ui] shortcode to a page. Once that’s done, return to the Uncanny Toolkit settings page and open the settings for Front End Login. Choose the page you added and save the settings. Once this is set up, users will be directed to the new branded login page instead of wp-login.php. Both the shortcode and the page must be set up for this to work properly. The login page must also be set up for the user verification to work.

To add a simple login form to any page, use this shortcode example: [uo_login]content if logged in[/uo_login]. That allows you to add the form and include a special message to users seeing the form area that have already signed in.

admin_barHide Admin Bar

This very simple function turns the black admin bar at the tops of pages off for any roles that you don’t want to have access to it. Typically this might include Subscriber and Customer roles.

LearnDash Resume Button

When turned on, this function stores the last LearnDash page that every learner visits. To use make this available to learners, add the [uo_learndash_resume] shortcode to any page. This will create a button that, when clicked, will take the user to the most recently accessed course, lesson or topic.

LearnDash Groups in User Profiles

As the title says, this feature adds a row to backend user profiles that shows a list of LearnDash Groups for which the user is a member. This makes it a lot easier to troubleshoot course permission issues on sites with many LearnDash Groups.

Login Redirect

redirect

By turning this feature on and setting a redirect URL in the Settings window, you can easily send users to any URL after login. If the URL field is left blank than users will be directed to the homepage. This feature is a great way to make sure learners are directed to a dashboard or course page immediately after signing in. Note that the redirect does not apply to administrators.

Topics Autocomplete Lessons

Have your learners ever gotten confused when they’re directed back up to the lesson page after completing all topics in the lesson? Ours too. It means they’re seeing the lesson page twice and have to mark it complete the second time, which isn’t always obvious. What this function does is run a check when a topic is completed to see if it’s the last incomplete topic in a lesson, and if it is, the lesson is marked complete automatically and the learner is navigated to the next lesson page. It may only save a click, but it can really help to simplify navigation and reduce confusion.

It almost always makes sense to show different content to signed-in learners and anonymous visitors. Learners need access to things like a course dashboard, profile management and account details; those things aren’t relevant to people that aren’t signed in. Turning this feature on adds a simple control for WordPress menus: each entry can be visible to everyone, visible to signed-in users only or visible to signed-out users only. We kept it light, so there are no controls by role or other attributes, but this should be good enough for most sites without requiring a heavy plugin.

Show LearnDash Certificates

Ever wish you could easily show a list of earned certificates? The [uo_learndash_certificates] shortcode makes it easy. Drop the shortcode anywhere to show a list of earned certificates, with the most recently earned at the top. To style the container, use [uo_learndash_certificates class=’my-class’ title=’my-title’], where my-class is a CSS class and my-title is a title for the element.

Show or Hide Content

This feature allows you to show any content you want to either logged in users OR logged out users. Here are 2 examples of how to use the shortcodes:

That example would display the text to users that are signed in. This might be useful in an Open course to display special bonus content, like a video or download.

Show content for logged out users

That example will display the content for users that aren’t signed in. This is helpful for calls to actions and other marketing that isn’t relevant to signed-in users.

LearnDash Certificate Widget

This feature is just like the Show LearnDash Certificates function above but it makes it available as a widget. This is a great addition to navigation sidebars on LearnDash pages and learner dashboards.

That’s it for the first iteration of the Uncanny LearnDash Toolkit!

We really hope you find it useful.

Click here to view the Uncanny LearnDash Toolkit in the WordPress Repository. Please note that it does require PHP 5.6, as recommended by WordPress.

v1.1 Update April 8, 2016:

Screenshot_040816_105703_AMWe’ve added a really handy feature for adding log in and log out links to your menu, widgets, or posts!

Once activated, you’ll see a panel called “Uncanny Menu Links” in your menu sidebar.  You can add a Log In link, a Log Out link, a link that automatically switches between Log In and Log Out depending on whether the user is logged in or out, or a link to your Register page.

To add the links to a widget or post, use the shortcodes below:

  • [uo_login] : Log In link
  • Logout : Log Out link
  • Log In : Log In / Log Out link
  • Register : Register page link

v1.2 Update April 12, 2016:

breadcrumbsWe’ve incorporated our breadcrumb link plugin into the Toolkit and improved how it works.

After enabling the module, you can use a 

shortcode wherever you want breadcrumb links to be displayed. If you want to include the breadcrumbs in a header template instead, use <uo_breadcrumbs()> in the PHP file.

Out of the box, breadcrumbs for LearnDash are displayed in the following format: Home > (Course Archive Page) > (Course Name) > (Lesson Name) > (Topic Name). Since most LearnDash users will prefer a dashboard (like a page with a profile shortcode, course grid or something custom), we added fields in the Settings panel for this module that allows you to define the dashboard page name as well as the page to use. When these 2 values are set, the dashboard will replace the course archive page in the breadcrumb links. You can also change the separator in the settings (and even include HTML if you want to use Font Awesome or something similar).

Because breadcrumbs just require a shortcode, you can use them inside LearnDash posts, in the sidebar, or anywhere else you want. We do also include WooCommerce support, but associations may not work as well for other post types.

47 replies
    • Ryan Moore
      Ryan Moore says:

      Hi Al,

      Thanks for the interest, but for now we would prefer not to make the toolkit available outside of the WordPress.org plugin ecosystem. You wouldn’t be able to update the standalone plugin and we want to focus on supporting the version in the repository only. Hopefully it won’t be long until the plugin goes live!

      Reply
  1. Neil
    Neil says:

    Brilliant add on Ryan to an already excellent LMS, really looking forward to your developments, a new Pro Panel would be fantastic. Well Done !

    Reply
  2. Neil
    Neil says:

    PS I really like the resume button, is there a way of changing this text to something like, “Remember where you were last time? Click here

    Brilliant! and very excited !

    Reply
    • Ryan Moore
      Ryan Moore says:

      Hi Neil, we’re not really planning anything like that for the Resume text. We want it to be a simple button and expect that context would typically be added around it with text. So on a typical LearnDash dashboard that we build, we would have a section beneath the heading that included a personal greeting and some brief instructions about how to use the page. That would include a reference to the Resume button and what it does. Then beneath that we would have an organized list of courses and a few other things.

      Reply
  3. Neil
    Neil says:

    Thanks Ryan, the problem I have is some students can’t read that efficiently and probably don’t understand the word “Resume”, I know that may sound a bit bizarre but unfortunately its true,
    I`ll try and find a localisation plugin, can it be changed that way ?

    Reply
    • Ryan Moore
      Ryan Moore says:

      Great point, and we’ll plan to make it possible to modify the label on the Resume button. We’ll probably have an update out in a week or so that makes that easier.

      Reply
  4. Celito Macachor
    Celito Macachor says:

    Hi, do i still need to have ThemeMyLogin active, if I chose to activate the log in features? Great plugin. Thanks.

    Reply
    • Ryan Moore
      Ryan Moore says:

      Hi Celito,

      It’s impossible for us to say whether you might need Theme My Login without seeing the site. If you’re using it for registration and already have login forms and other features set up, I would recommend disabling our Front End Login module. It’s redundant. If you’re strictly using TML for login forms, and haven’t done a lot of customization to it, by all means try disabling it and give our module a try. We have used TML on sites that have our Toolkit (with front end login disabled) because we’re relying on TML for things our plugin can’t do. On a current project we use an in-house code redemption plugin to unlock LearnDash course access, and it’s hooked in to TML, so in that case it makes sense to stick with TML for all registration/login functions. It really depends on the context of the site.

      Reply
      • Celito
        Celito says:

        Got it. Thanks for the great advice. For my needs, it was more practical to disable TML, and use the front end login module.

        Reply
      • HunterGatherer
        HunterGatherer says:

        Thanks for answering that. We run TML, and it was the first question that came to mind when I saw it in the toolkit.

        Great job. I like how you’ve packaged it, the tools available, the switches, and everything. Thanks.

        HG

        Reply
  5. Michael
    Michael says:

    I don’t think it works with Multisite yet. It keeps telling me LearnDash is needed, but it’s already installed and active.

    Reply
    • Ryan
      Ryan says:

      After investigation with Michael, we determined the issue to be the use of LearnDash 2.0.6.4 on the site. If you’re using the Toolkit, please make sure you’re using LearnDash 2.2 or later.

      Reply
  6. Tanja
    Tanja says:

    I love the idea of the login redirect. I created a special page, but when I put in the /start it still redirects to the original course archive that was there before installing this plugin (/courses). It seems simple enough… I’m not sure what I’m doing wrong! Do I need to turn off a setting in theme my login?

    Reply
    • Ryan
      Ryan says:

      Hi Tanja! Yes, our redirect will absolutely conflict with any other redirection you may have on the site (Theme My Login, Peter’s Login Redirect, UserPro, etc.). If you’re using our redirect tool, it’s best to disable conflicting plugin features. With TML, that would mean turning off redirection from the main settings page (/wp-admin/admin.php?page=theme_my_login on your site). Alternatively, you can turn off our login redirect module and continue using whatever redirection you have in place and change the settings in that plugin.

      Reply
  7. Reach Online
    Reach Online says:

    Hi,

    Just want to say thank you for an excellent plug that expands on Learn Dash and adds many features that usually require a range of other plug ins installed.

    Keep up the good work and look forward to future releases!

    Reply
    • Ryan
      Ryan says:

      There’s not; sorry Geraldo. Things were left open for translation with filters and gettext if development is an option, but I’m afraid that’s it for now.

      Reply
      • Gerardo
        Gerardo says:

        Thanks for the quick response Ryan!

        Is plugin translation on your roadmap? I really want to use your plugin but we need it in spanish!

        Thanks again!

        Reply
        • Ryan
          Ryan says:

          Hi Gerardo,

          Right now easier translation is not something we’ve really looked into and it’s not a high priority for us. Sorry about that.

          Reply
        • Fiete Sass
          Fiete Sass says:

          Hi Gerardo,
          after already having started translating to German I realized that the plugin is not translation ready. First I was kind of disappointed. However, now I combine it with TML. I use TML for Login and Login/Logout Redirection and UO vor Logout and the other nice features that produce no language output. TML is translation ready and this way the combination works well.

          Reply
  8. Fiete Sass
    Fiete Sass says:

    Thanks to you clever and generous people at Uncanny Owl, who share your wisdom! This is an excellent plugin. It adds a lot of use value to Learndash and makes it even more attractive. And for me it came just in time!

    Reply
  9. Zul
    Zul says:

    Great plugin!

    Regarding the clean log-in:

    1. Can you add ‘captcha’?
    2. How secure is it?
    3. My site is monitored by Sucuri and each time the admin signs in via the wp-admin log-in the IP address has to be white listed. Will the clean log in bypass this?

    Reply
    • Ryan
      Ryan says:

      Glad to hear you’re finding the plugin helpful! Here are some answers to your questions:

      1. It’s not on our roadmap. If it’s needed, custom development is an option.
      2. We tried to replicate WordPress functions to make things easier for us and more secure for users. We certainly developed with security in mind, but it hasn’t been audited by third-party security firms, so it’s difficult to answer your question objectively.
      3. We have not tested with Sucuri.

      Thanks!

      Reply
  10. Halle
    Halle says:

    I love this toolkit! However, I have a new issue popping up with it. For some reason the Course Certificates display is now showing duplicate listings of earned certificates.

    I have checked the shortcode, and it is correct.

    Any ideas?

    Reply
    • Ryan
      Ryan says:

      Hi Halle!

      This behaviour changed in 1.2.6 and is by design. We did it to accommodate this support issue: https://wordpress.org/support/topic/certificates-with-the-same-name. Duplicates are now displayed in cases where users earn certificates multiple times or reuse certificates across courses and the certificate names are the same. This is behaviour is consistent with what LearnDash does with the ld_profile shortcode.

      The previous behaviour that eliminated duplicates was cleaner for some users but caused problems on sites that reused certificates. We felt like showing ALL earned certificates, even duplicates, was safer.

      Reply
  11. Bob
    Bob says:

    Awesome Plugin!

    Looking at using Google Authenticator for added security with administrator login. Would you be able to add a field for Google Authenticator Code for your custom login form?

    Reply
    • Ryan
      Ryan says:

      Thanks Bob, glad you like the plugin. The feature request may be something we consider in future but it’s probably not something we’ll be adding in the next few months.

      Reply
  12. Rob Campbell
    Rob Campbell says:

    Thank you for sharing this plugin. It must have involved a lot of work, and I’m looking forward to trying it out on my first course. I’ll let you know you know the results.

    This is probably not the best forum for a feature, but here I go anyway: I would love a simple way to display the current course name in the sidebar. That would give a lot more context to the “Course Progress” and “Course Outline” widgets. It could also be a quick link back to the course home page.

    Thanks again,
    Rob

    Reply
    • Ryan
      Ryan says:

      Thanks Rob! Glad you like the plugin, and yes, it was a lot of work. But it saves us time in the development of client sites as well, and by getting it in front of a lot people, we know it’s very well tested and stable.

      The Course Navigation widget included in LearnDash does list course name at the bottom. It’s not quite the way you’d like it, but for our sites and purposes, we generally find that sufficient. Moreover, we typically include breadcrumb links in the header template, which also lists the course users are in for context. Those 2 instances of the course name (both which link back to the course) are generally sufficient, so a shortcode or widget for course name probably isn’t something we’ll add. Thanks for the feedback though!

      Reply
  13. Cathal
    Cathal says:

    Hi,
    I looked for something like this a year ago when I was starting out with learndash so its an excellent add on. It would have made mys life so much easier at the time.

    Is there anywhere we can see a list of things you may be adding to the plugin in the future.
    Two of the features I am looking for at the minute are:

    1. Be able to search in assignments by “Author”. We could maybe have a 1000 assignments and 400 students on the site and to be only able to search by “course” or “lesson” is a real pain. You should be able to search by Author also.

    2. Again we could have a 1000 assignments and 400 students on a site and each student has to do one or maybe two assignments in work and upload to site and the students can’t wait for all their assignments to be corrected before they move on to the next lesson so its set to auto approve. But this creates a big problem if there is something wrong with the assignments when the tutor does correct it because the student can’t go back and delete the old assignment and upload new one if the tutor tells them to do so as that functionality is not there.

    Thanks a mill for any comment in advance.
    Cathal

    Reply
    • Ryan
      Ryan says:

      Hi Cathal,

      Thanks for your comment (and Pro plugin purchase just now)!

      We don’t currently have a public roadmap for either the Toolkit itself or the Pro modules. To be honest, it fluctuates primarily based on what we’re developing for other projects as well as what we think would be of value. And, unfortunately, on the vast majority of our client sites and internal work, we simply don’t use LearnDash assignments. I know their value, I know they are used, but whenever they do come up for projects they’re usually not the right fit (most recently for one of the reasons you cited, like repeated 2 way communication and updates).

      It is something we’ll consider, but unfortunately also not something I would expect to see soon (at least within the next few months) in our plugins.

      Reply
      • Greg Reimer
        Greg Reimer says:

        I’m also struggling to get a grip on the best way to handle the back-and-forth of what we call “assessments”. The student submits work, we review it and either pass it, or ask for changes. The student then submits again, and the process continues until it passes the grade. Are quizzes or comments better for this kind of thing? How to keep comments private between student and admin?

        Reply
      • Ryan
        Ryan says:

        It sounds like there’s a lot of interest in assignments! Both of Cathal’s requests seem like good additions to the core LearnDash plugin, so do consider adding them or supporting them on the Ideas tab of the LearnDash support site (especially since we’re not currently planning anything related to assignments). From the Ideas tab I get the impression that Justin is tackling something like what Greg needs in an upcoming release. We’ll monitor what LearnDash does and if there’s a lot of interest we may still include something in a future plugin.

        Reply
  14. cathal Hanratty
    cathal Hanratty says:

    I had to get this custom coded in the end. I did think about putting it into a plugin so if anybody is interested in this let me know.
    One of the other features of the plugin was to add a search function for the student/Author as that is another serious issue withe the assignment module. In that if you have a 1000 assignments and 400 students you cant search by student to see how many assignments the student has. I found thsi to be really strange. You can only search by lesson or topic.

    Cathal

    Reply
  15. Amy
    Amy says:

    Thank you for developing this wide-reaching plugin.

    I mainly just using it for the breadcrumbs, which are super helpful. However, it’s causing one problem (on mobile) that almost makes it unusable for me (as far as user-experience).

    Before I installed the Tookit plugin, I was using the custom code you provided for just the plugins and had that in my header.php file. With that code added (at least for my site), I discovered on mobile that it causes horizontal scrolling/panning. When I remove the Uncanny Owl breadcrumbs code, it stops. This issue happens even if you add “body { overflow: hidden; }, and it happens even if the correct scale and scrolling meta tags are in the head.

    I was hoping this wouldn’t happen if I used the Toolkit plugin, but it’s happening with that as well.

    Is this occurring for anyone else? Either way, might you have a suggestion for how I might go about fixing this?

    Thanks so much.

    Reply
    • Amy
      Amy says:

      I got it! Finally.

      The code that gets added to the header.php file:

      I wrapped that by doing the following:

      Then I gave #breadcrumbs the following CSS styles:

      #breadcrumbs {
      overflow: hidden !important;
      overflow-y: auto !important;
      }

      That worked.

      For some reason the same styles applied to the “body” element did NOT work.

      Anyhow, if this issue happens for anyone else, hope the above helps.

      Reply
        • Amy
          Amy says:

          Thanks Ryan. The code example in my last comment did not get posted. Maybe the below will show up:

          The code that gets added to the header.php file,
          I wrapped that by doing the following:

          <div id=”breadcrumbs”><div class=”container_24″><?php learndash_breadcrumbs() ?></div></div>

          Then I gave “#breadcrumbs” these CSS styles:

          #breadcrumbs {
          overflow: hidden !important;
          overflow-y: auto !important;
          }

          Reply
    • Ryan
      Ryan says:

      Hi Asher,

      I’m afraid that it may still be some time. Right now we’re busy with client projects and some new plugins, but we hope to revisit that in future. I definitely don’t expect that change in at least the next 4 months. Sorry about that.

      Reply
  16. Jaycbrf4
    Jaycbrf4 says:

    Would be great if the user could select their Group at registration so they are redirected to courses assigned to just that group.

    Reply
    • Ryan
      Ryan says:

      Hi Jay,

      This is not something we expect to add (as there are so many ways to register users and it’s a completely different solution than what’s in our Pro plugin), but we appreciate the feedback!

      Reply

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *