Group Hierarchy Reporting support for LearnDash

It’s time for a huge Uncanny Groups for LearnDash release that adds some important new tools for site owners, end users and developers. Let’s jump straight in to what’s new.

Group Hierarchy support for LearnDash reports

This has been a popular request for months now but we needed to be very careful about how we approached it. We didn’t want to slow report generation down too much, nor did we want to potentially confuse users with new views of consolidated data. As such, the very first thing we did was to make the hierarchy support optional. To use it, turn on group hierarchies in LearnDash and enable this new option in your Uncanny Groups settings page:

Add LearnDash group hierarchy support

Once those changes are made, and you have some groups set up in hierarchies, visit your Group Management page on the front end. If you select a parent group from the drop-down (or you view it as a user with a single group that is a parent), you’ll see a new checkbox to include data from child groups in the table. When you check this, the page will reload and students across the current group and all child groups will be output in the table. The list of courses for the group will be updated to include courses from all child groups (as results from students in the table could be for courses not otherwise in the parent group), the functions in the Users menu are hidden (to avoid confusion around which group a student would be added to) and the checkboxes to select multiple users are also removed (students can only be removed from a single group at a time).

For other report pages (including the course progress, quiz, essay and assignment reports), results from the child and parent groups will be combined automatically. These reports, when the “Include data from child groups in reports” setting is checked, will always show data that covers both the selected group and all of its children, no matter how many levels deep in the hierarchy.

Please note that this is a global setting, it is not possible to add hierarchy support in reports for some groups only or for some reports only. The setting affects all groups and Uncanny Groups reports.

Export the Group Management student list

The Uncanny Groups 4.1 release adds support for exporting the list of students on the Group Management page to a CSV file. By default, an “Export CSV” menu option is added to the Users menu on the page. For users that hide or show elements using our shortcode attributes, this menu option can be hidden with the new csv_export_button=”hide” attribute for the Group Management page shortcode.

Seat count changes when users are removed

Normally, removing a user from a group (when it’s “allowed”) causes the seat count to increase. After all, since the user is no longer in a group, in most situations someone else should be allowed to take their place.

In Uncanny Groups 4.1, there is now a setting so that users that have completed all courses for a group will not free up a seat when they’re removed from the group. Here’s the new option for this behaviour:

Free LearnDash Group Seats

Instant access to essay records

We have added the ability to prepopulate the search field on the Manage Essays page based on a querystring passed into the URL of a page. As populating URLs should be dynamic for there to be much value with this feature, it is largely for use by developers. To use this new feature, add this string to the URL of a Manage Essays report page:


where “%query%” is a string to be entered in the search field, perhaps a username, status or lesson to pull up reports more quickly with the associated record. This helps to show users a specific view of data without them having to filter records themselves.

New Developer filters

We know many sites want to customize our reports to show different columns, filters and more. To help with this (as even if we add more optional columns, we’ll never make everyone happy), the following new filters have been added:

Progress Report – ulgm_progress_report_courses

Progress Report – ulgm_progress_report_user_quizzes

Progress Report – ulgm_progress_report_user_courses

Group Management page – ulgm_is_reconcile_required

Group Course Report – ulgm_group_course_report_user_course_data

Edit Group page – ulgm_other_similar_orders_limit

These new additions will help developers more easily modify our report output to meet exact site requirements.

We hope you enjoy the new enhancements!


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


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


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.

Menu Item Visibility

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:

Log In/Log Out Links

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:

Breadcrumb Links

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.

New to WordPress? Start Here

BudhaBlogging_orangerob_mikeface copyWe love helping people discover WordPress and use it in creative ways. In fact, its one of the things that sets us apart in the LearnDash consulting space—we’re educators first, developers second. Every project we work on puts heavy emphasis on training clients to use their platforms effectively and delivering a great learning experience to users. We spend a lot of time teaching people to use WordPress and we’re always looking for better ways to deliver WordPress training.

That’s why we were very excited to partner with Mike Brown of TheBloggingBuddha to create an easier way to help beginners learn WordPress. What really sets TheBloggingBuddha apart is that it’s very simple, it’s comprehensive, and it’s free. An account is only needed to track progress and issue rewards.

TheBloggingBuddha walks new WordPress users through the entire website creation process, from buying a domain and hosting to setting up pages, posts and plugins in WordPress. By the end of the WordPress Orientation course, learners will have a fully-functional blog up and running; and best of all, they’ll understand how to use and maintain it.

Here’s a video that explains TheBloggingBuddha:

TheBloggingBuddha website is, of course, powered by LearnDash. That’s why we’re profiling it! The site itself is the result of a collaboration between Mike Brown (TheBloggingBuddha), Bourn Creative (site and theme development), and Uncanny Owl (all things LearnDash-related and authoring of the WordPress Orientation course).
What visitors to our blog will especially like is that it’s one of very few examples of a robust LearnDash site where all LearnDash courses are available to everyone at no cost. It’s often hard to showcase LearnDash on WordPress sites because the LearnDash content is only available to paid users. With TheBloggingBuddha everything is free—even without an account (users without an account just can’t see videos).

For our LearnDash readers, you can jump straight to lessons on how to start a blog to see how the course was set up in LearnDash. LearnDash was only lightly styled, and the Course Grid and BadgeOS plugins help to improve the look & feel as well as engagement. We did some development to handle things like a personal greeting, encouraging users to create an account, and redirections, but we really kept plugins and development to a minimum. It’s a great example of what can be done with LearnDash and some very minor customizations.

We hope you enjoy TheBloggingBuddha and find it useful, both for WordPress training and as a LearnDash showcase!

Hosting High Traffic LearnDash Sites

Update: Please note that this post is a summary of tests we conducted to assess the number of simultaneous learners a site can support, not total learners in a system. LearnDash can accommodate tens of thousands of users in the database, but most hosts can’t accommodate that number of learners being on the site at the same time. The tests in this article were to assess how many simultaneous learners the hosting plans could accommodate.

At Uncanny Owl, we’ve been building and managing LearnDash sites for several years. In that time, you might think that we’d have a hosting solution for every possible type of LearnDash site, but we simply don’t. We have LearnDash sites on Flywheel, WP Engine, Cloudways, Kinsta, even Digital Ocean and Vultr instances. We set each site up on a platform that’s a suitable fit for the site and volume of learners, and generally we target accommodating 25 to 50 simultaneous learners. That might sound like very few, but we find it’s enough even for sites with several thousand learners. It’s just very rare for a large group of learners to visit the site and complete learning activities at the same time. As such, we target the site’s actual load to make sure our clients aren’t paying for more than the site needs.

Recently, a client asked us to develop a plan for ramping up to tens of thousands of learners quite quickly. It’s been a long time since we last did load testing on LearnDash, and we’ve never done it with higher-end tiers on managed providers. We decided to try out the client’s existing LearnDash site that was reasonably heavy (University theme with Visual Composer, a few dozen plugins and various customizations) to see how it would hold up. The site wasn’t one we created, but it’s representative of what a lot of people create with LearnDash.

We loaded the site up on 3 different hosts: a Professional plan at WP Engine ($99/month), Business plan at Kinsta ($287/month) and an 8-core/16GB Vultr instance at Cloudways ($264/month). We knew the load would really push the cores to their breaking point, so we had high hopes for the 8 core Vultr VM. We created a complex script for Blazemeter that had 1,000 total users sign in to WordPress and complete/navigate close to 60 LearnDash pages. Each page had a lot of shortcodes and a number of images or embedded video. We even had users complete a quiz. Clicks were mostly timed about 30 seconds apart, which was on the aggressive side for LearnDash use, but we wanted to see what it took to break the servers. Activity was spread out over an hour, with the number of users gradually ramping up. Because the activities didn’t take an hour to complete, we planned to see some virtual users roll off the test as others started (so we would never see 1,000 simultaneous learners, but we did want to see a few hundred).

Cloudways Results

CloudwaysIt’s hard to tell from the chart, but Cloudways was great until about 75 users. Then page load times climbed to 5 seconds—and kept climbing. The test ended up peaking at a very high number of users because it got too slow for users to complete the script. By 100 users the response time was an unacceptable 10 seconds, and by 400 users, the error rate shot up. Because Cloudways kept getting worse and worse, and further behind, average page load time ended up being 67 seconds. The server was fine for 75 learners, but definitely no more. All cores were maxed out after that point. One thing to note: this server was held back a bit by not using a CDN. Both other sites benefitted from a CDN.

Kinsta Results

KinstaThe Kinsta graph looks a lot better, right? The response time looks stable—until you notice that it’s stable at about 25 seconds. That’s far too long for users to wait. Response time on Kinsta is good until about 100 users. After that, it’s just too slow, and at 300 users we start seeing errors on top of that. On a side note, this was our first time using Kinsta and developer tools just weren’t as useful or efficient as on WP Engine. It’s not reflected in the numbers, but it’s definitely a consideration when we’re choosing where to host a site.

WP Engine Results

WP_EngineWe ended this test early because we had the info we needed after 20 minutes. WP Engine failed early too; right at about 85 users. What was different on WP Engine was that load times didn’t increase; if response times got high WP Engine just threw (a lot of) 502 errors. A poor user experience, to be sure, but still better than Cloudways serving pages in 60+ seconds—at least users saw something. And the key takeaway is that the site was ok up to 85 simultaneous learners, which surprised us, given that WP Engine was the only shared environment and it’s one third the price of the others.

None of the results really impressed us; we hoped that at least one of the servers could have accommodated over 100 simultaneous learners. For now, at least, we put that particular client site on WP Engine. Performance is good enough for the current number of learners, it’s the lowest cost of the 3, we have an upgrade path there for additional learners, and the site tools we need are the easiest to work with. We just wish we didn’t have to always deal with caching and session/cookie issues on complex LearnDash sites hosted on WP Engine.

If you’re managing a LearnDash site that has a lot of simultaneous learners, we would love to hear how you’re hosting it in the comments!

Best Practices For a First WordPress LMS with LearnDash

learndash-decisionsWe help small and large businesses create WordPress-powered Learning Management Systems. While every business might come to us with different needs, everyone’s early questions tend to have similar themes. Is a WordPress LMS the right fit for my needs and program? How can I deliver a great learning experience? We thought many of our answers to questions like those would be of interest to a wider audience, so this post captures what we generally recommend for WordPress LMS projects.

Before jumping into any WordPress LMS project, we always make sure that WordPress is the right fit. It’s definitely the wrong choice for many projects! For programs with fewer than 100 users, a cloud LMS can be more cost-effective. I personally find that a WordPress LMS (like LearnDash or Sensei) works best for self-directed, linear elearning programs. Courses with a lot of video, text, images and downloads fit well, and it’s best for programs with relatively simple needs.

Facilitated programs can work in a WordPress platform, and we’ve created and seen examples of some that are quite effective. Tin Can support is available, and while we have created several programs that rely on an LRS, I’m never thrilled with the outcome. My strong preference, if Storyline, Captivate or Lectora content needs to be embedded inside WordPress, is to embed only and not track anything inside those modules. Rely on LearnDash (the LMS plugin we use most) for tracking and assessment rather than Tin Can, and generally speaking, simpler programs are better with LearnDash, unless you have some development expertise. If you don’t understand most of this paragraph, that’s a good thing, because it likely means your needs are probably simple and a better LearnDash fit!

Once you’ve determined whether or not a WordPress LMS seems like the right fit for your program, spend some time thinking about the learner experience you want to achieve and what the platform needs to do. There are a lot of things that LearnDash can’t handle well out of the box, even with integrations—group licensing, extended reporting, handling multiple course authors and programs where continuing education credits are issued come to mind. These types of things require professional assistance, and even then, there may be better platforms.

It’s also important to consider whether your course structure fits within the LearnDash model. For most uses, LearnDash effectively has a 3-level course structure: courses at the top, then lessons, then topics inside lessons. I like to see courses where materials can be divided up into 2-5 minute segments, which become lessons and topics inside LearnDash. Keep in mind that LearnDash only tracks whether or not users complete a lessons or topic, not what they do inside it (unless it’s a quiz). So if your course consists of a series of 1-hour videos, users are going to find it painful when they discover they can’t resume videos in later visits. By keeping pages brief and focused, it’s much easier for users to tackle programs across sessions and to feel like they’re making progress. LearnDash is a much better fit for courses that can chunk information as I’ve described.

Of course, since I’ve said that LearnDash works better with simple programs that don’t have a lot of interactivity, how do you make courses engaging and promote knowledge transfer? Well, even if you stick to simple media and interventions, you can still push them to deliver an effective learning experience. Videos work well inside LearnDash. If you have great videos to work with, you’re definitely a step ahead. Use short quizzes liberally to promote reflection and self-assessment. Get some great images and diagrams in there! We have an in-house designer for that purpose, but even if you don’t, stock photo sites like Depositphotos can be a great source of media. Try to mix things up and appeal to a variety of learning styles. We try to build programs that mix video, text, printable files, quizzes, infographics, diagrams, suggestions for offline activities, surveys and more. Since WordPress is extendable with plugins, it means we can also easily add interactive elements, like images with hotspots, games, awards for completing activities, and even social elements. For one of our sites we even created a virtual study group system!

Many of the businesses we partner with are familiar with WordPress, and sometimes unlearning the blog-centric view of WordPress is important. On a typical WordPress site, most people aren’t signed in when they use it. With LearnDash, the signed-in experience needs at least as much consideration as the public experience. A lot is different—typically menu items, navigation, and access to pages and resources will be modified for signed-in users. While anonymous visitors are typically directed through a sales funnel, signed-in users should have easy access to program materials. It’s important to think about both experiences (and, on many larger sites, the experiences of different user roles and groups).

The signed-in experience also introduces a lot of hosting considerations that are easily overlooked. It’s harder to cache LearnDash sites because pages are customized to the user. They tend to be more complex and CPU-heavy than typical WordPress sites. We only host client sites on managed WordPress hosts like WP Engine. We’ve simply had too many issues on shared hosts and VPS systems, and saving $20 per month is never worth the risk or inconvenience. Moreover, we love having a phone number to call for immediate help and having to worry less about security and backups.

Once you’ve settled on LearnDash, a vision for the platform and the infrastructure, choosing a solid theme and plugins are extremely important decisions. Before I talk about what we generally use, I’ll add some qualifiers. Yes, we know that for performance and stability reasons custom themes and code are the preferred way to go. We know that our typical platforms are “wrong” to WordPress purists. We do go heavier for several reasons:

  • Client ease of use and flexibility are huge for us. We want people in there designing new course materials without having to remember shortcodes or going through us. We want people to feel empowered by the platform, not enamoured with the front end but unable to make changes themselves.
  • We don’t want people to feel like they’re stuck with Uncanny Owl. We want to earn that ongoing relationship, not force it. That’s why we like commercial support from paid plugins and themes, big user communities, regular updates, etc. Our client sites are safe no matter how involved we are in future. Yes, we do a lot of customizations for platforms, but that doesn’t mean we need to reinvent the wheel for everything we implement.

With that model in mind, we do make use of commercial themes. Right now we like Total for new LearnDash platforms. Yes, it’s heavier than it needs to be for most sites. But it also gives people a lot of control without the risk of breaking things, and it plays nicely with LearnDash. It’s also reasonably developer-friendly.

We do use several plugins consistently on LearnDash sites. Since this invariably comes up in discussions with LearnDash users who are trying to do things themselves, here are the plugins we find particularly valuable:

Content Aware Sidebars – To segregate widgets between LearnDash and non-LearnDash parts of websites.

Gravity Forms – Because basic forms and LearnDash quizzes usually aren’t enough, and there are some interesting ways to incorporate forms for feedback, evaluation, reflection and more.

Nav Menu Roles – To manage menus based on signed-in state and role.

WooCommerce – Our ecommerce standard because we can make it accommodate almost any scenario.

We do have a lot of other recommended plugins (and lots of in-house ones) but we’ll save those for another post. The ones above make it onto almost all of our LearnDash sites. One thing to keep in mind with plugins is to try to only use the plugins you absolutely need. Yes, we know it’s tempting to experiment and add features, but they do slow things down and increase risk.

Once you’ve settled on all of the pieces described above, you’ll have all of the fundamentals in place to build an engaging and efficient platform. We hope this post helped to point you in the right direction!

Case Study: English in 30 Minutes

English in 30 Minutes
We recently helped a client in the UK launch English in 30 Minutes, a new online learning program that helps students and young professionals improve their English skills. The site had been in development for a year before Uncanny Owl became involved, with work performed by both site owners and 2 other developers. When we took over, functionality was lacking and there were multiples issues with both design and operation. Uncanny Owl’s mandate was to do whatever was needed to create a functional and engaging site that made it easy for people to learn English.

Uncanny Owl did everything from copywriting and design to custom plugin development and implementation. Using LearnDash for LMS capabilities, we created a robust learning platform that can accommodate thousands of global learners.

Issues and Solutions

The site we took over was broken in a number of key areas. Because we didn’t know what had been created or how, we ended up abandoning the existing WordPress platform. We were able to salvage some course materials, like quizzes, but most elements needed to be rebuilt. While we never like to have clients pay to essentially perform the same work twice, the state of the platform and our own peace of mind left us with few alternatives.

The biggest challenge we faced with the English in 30 Minutes site was the sheer size of the program. It was (and remains) the largest LearnDash implementation we’ve undertaken, with approximately 2,300 unique LearnDash posts across 25 courses. By default, the LearnDash plugin looks up topics and completion status across all courses when it generates sidebars and table elements, which significantly affected performance for the site. We were seeing average load times of 12 seconds on LearnDash pages, which was unacceptable for users and also made it painful on the admin side. By changing LearnDash core code so that MySQL queries weren’t as broad, we were able to get LearnDash load times under 2 seconds. Developing this solution was a huge win for us and prompted this reaction from our client: “Guys – THANK YOU! I keep playing with it, jumping from page to page…incredible! I am over the moon with this!!!”

English in 30 Minutes was also the first LearnDash site we’ve deployed that doesn’t use a visible sidebar for navigation. As the program is very heavy on video-based training, the learner experience for videos had to be very strong. To accommodate a large post area, for video as well as some of the interactive games on the site, we created a collapsible sidebar that’s hidden by default. When the learner needs it, they click a prominent icon and the sidebar slides out. As the program is generally completed linearly, ad hoc navigation between lessons and topics doesn’t need to be used often and lends itself better to being hidden by default.

English in 30 Minutes Customizations

To improve navigation with the sidebar hidden, we added custom breadcrumb capabilities to the site. Out of the box, breadcrumbs typically don’t work on LearnDash sites, because the theme doesn’t know how to look up relationships between LearnDash courses, lessons and topics. Our plugin does, and it makes navigation up to higher points in the program easy.

Key Architecture Details

English in 30 Minutes is a large program that’s sold directly to consumers on a membership basis. It leverages an affiliate program for marketing, some light gamification, interactive games (including flashcards and matching), account sharing restrictions and more.

We used Total as the theme for the site (using a child theme and custom plugins). We chose Total because it generally works well with LearnDash, it’s reasonably straightforward for clients to manage, and it does what we need it to do. It also has a reasonably large userbase and active development.
Here’s a list of some key plugins used on the English in 30 Minutes site:

Gravity Forms
Ninja Kick: Sliding Panel
Paid Memberships Pro

The live site is hosted at Flywheel. The site performs well there, the interface is nice for clients, and the managed services means we can focus on the site rather than the infrastructure.

Results has only been live for 1 week, but so far it’s had almost 300 unique visitors from around the world with no marketing. Getting the first unsolicited sign-up for an account was a big step, and we’re excited about English in 30 Minute’s growth!

Of course, our most important measures are making sure our client is happy with our work and is left with a capable learning platform. Here’s what he had to say about that:

I really cannot speak highly enough about the guys at Uncanny Owl. They were actually my 3rd design team for this project and I only wish I had found them first! Their commitment, innovation, advice, patience and support have been outstanding, even when I fell behind at times with my work schedule, and I make a point of using their name in recommendation in any discussion I have regarding the site. They definitely went the extra mile with this one, in particular the page load speed fix and breadcrumb plugin were very impressive indeed, and I look forward to a long-term partnership with them for the future.

Visit to see a sample of our work in action. It’s also a great resource (and certainly one of the most comprehensive) for learning English online!

Setting up Zapier with LearnDash

Zapier Logo

LearnDash (the company) released a very exciting update on Wednesday that allows LearnDash (the plugin) to talk to over 300 third-party applications. This means that key LearnDash events, like course enrolments and completions, can now trigger actions in other applications, like adding a learner to a mailing list, sending an email, creating a help desk ticket and more. LearnDash uses Zapier to talk to other integrations, and it works really well—once you understand how to do it.

We were a bit too excited by the Zapier release and installed it as soon as it was available, and before instructions had been posted. This caused some initial confusion, both for us and one of our clients (who also wanted to jump on board). To make things a little easier, we created the screencast below to walk through the process of setting up your first zap.

We hope that was helpful!

Over the next few months we’ll be building new zaps for ourselves and our clients. If we come up with anything interesting, we’ll post it here!

We’re Hiring!

wordpress-workerUncanny Owl is looking for an experienced WordPress Developer to join our team on a full time or contract basis. We need help with all development stages of WordPress projects, including creating and customizing complex plugins, modifying and styling themes, and even some front-end design. Experience developing large membership sites and previous work with WordPress LMS tools (e.g. LearnDash and Sensei) would be a huge benefit. A Toronto-area candidate is preferred but your skill set is more important than your location.

For more information and to apply, click here.

No agencies or companies, please.


WordPress LMS Survey Results

149209692As part of our work with WordPress LMS solutions, we tend to deal with the higher end of the market, which includes small and mid-sized businesses with the budget for robust learning platforms. Our  focus means we unfortunately aren’t as connected as we would like with the larger WordPress LMS market, so we decided to conduct a survey last week to see how other people use products like LearnDash, Sensei and WP Courseware. We had a fantastic response from the community and what we discovered surprised us.

We reached out to approximately 150 people by email. These people had visited the Uncanny Owl website over the last few months and provided their email address to us. None were clients. In fact, we had never communicated with any of the participants outside of the survey.

Of the 150 people we invited, 16 people from around the world chose to participate. We asked participants questions about how they used WordPress LMS plugins, their programs, their audience, their issues and more. Responses were candid and the people who participated seemed to appreciate the opportunity to be heard.

Here are the findings that we found most interesting:

Almost half (44%) of participants used, or planned to use, content that was SCORM or Tin Can compliant on their sites. Very few of Uncanny Owl’s clients create their programs with elearning authoring tools, so this was a very big surprise, especially given the low project budgets of survey participants.

People are using WordPress LMS plugins for more than just self-directed elearning. 38% offer facilitated programs online and 31% offer programs offline as well. Programs are reasonably complex, too. Almost everyone offers videos, file downloads, embedded documents, quizzes, certificates, ecommerce—even forums. Over 35% of participants also incorporate capabilities like marketing automation, gamification and end user support systems.

People rank ongoing support and available integrations low when shopping for an LMS, yet complaints in those areas are most common. We saw a lot of complaints about plugins not being able to do what people expected (and therefore having to rely on other plugins) and difficulty finding guidance, especially that went beyond individual plugins. Participants wanted guidance on how to create complete learning platforms and had trouble getting the advice they needed.

There were a lot of complaints. When we asked an open-ended question about surprises they experienced with LMS projects, 67% of comments were complaints, mostly about the LMS plugins. In fact, when we asked people to rank project challenges, adding customizations, making things work together and finding help were at the top of the list.

No-one had an LMS platform they considered complete. Our list of users went back over 6 months, so we were surprised that no-one was able to get a project across the finish line.

WordPress LMS projects cost more than people expect. Only 1 participant found costs lower than expected. Half of participants said costs met expectations, and 44% said costs exceeded expectations. We were actually surprised by budgets; 63% said implementation costs (including effort) were under $2,500, and 76% said monthly maintenance costs were under $250. Of course, since no participants had a completed platform, these estimates may end up being low.

Learning to use a WordPress LMS can be hard work. 44% of participants said they weren’t comfortable managing WordPress and their LMS yet. Another 13% said it took between 75 and 200 hours until they felt comfortable.

How do these findings compare with your own experiences using WordPress LMS plugins? We’d love to hear more about your experiences in the comments.

A Beginner’s Reaction to Using WordPress LMS Plugins

Surprised girlAs experienced users of WordPress LMS plugins like LearnDash and Sensei, we at Uncanny Owl sometimes overlook the challenges that new users face when building a learning-enabled website. Documentation and support for LMS plugins vary widely, and for many small businesses interested in delivering learning, both their knowledge of WordPress and instructional design may be quite limited. To reconnect with how new users experience WordPress LMS products, we thought it might be a fun experiment to set an inexperienced WordPress user up with a basic site that only included a theme and an LMS plugin, since this is how many businesses approach LearnDash projects.

Our tester had only very basic WordPress experience and we set up separate WordPress instances with LearnDash, Sensei and WP Courseware. We provided only minimal guidance to get things started, but did make plugin documentation and support resources available. Our tester was assigned the basic task of setting up a course with each plugin, adding some simple lessons and setting up a quiz. After experimenting for a few hours with all 3 LMS tools, we asked her to write a summary of her experiences. What follows are her observations.

“I started with Sensei and did some research before jumping in. I knew there would be limited options for quiz questions and prepared myself for that but thought that it would be a simple exercise otherwise. I was able to create my lessons and add them to courses but had issues along the way. I wanted to embed a video into my lesson and it worked but comes up very large (we’re talking almost full screen) and I have no idea why or how to change it. I couldn’t find anything about adding a certificate to award upon completion of my course so I had to google that and found out it’s a plugin extension I would need to add. It’s free so it would’ve saved me a lot of time and effort to have the option there already rather than having to download the plugin and sort that out. I tried to add a quiz and it appears to be there with many questions but if I try to navigate to that page it shows a quiz with no questions available. Again I don’t know why and haven’t been able to figure it out on my own. My sidebar navigation was also broken and I don’t know why since I didn’t do anything except add lessons, a course and a quiz. I changed the name of one lesson after the fact and now the quiz won’t work and still links to what the lesson was previously named. Their documentation and support wasn’t very helpful. With everything added (I thought) but the site hopelessly broken, I gave up and moved on.

For some reason I made the assumption that WP Courseware would be the most straightforward and easy to use. As soon as I started, however, I realized my mistake. The very first problem I encountered is the terminology used. I wanted to add a course with lessons. Seems straightforward, right? I started looking for ‘lessons’ or ‘add lesson’ and they’re nowhere to be found. I saw something about ‘modules’ and ‘units’ and realized those were what I needed. So I started setting up a training course, which looked like a good place to start, though I’m very unsure at this point. Then I try to set up a course unit, which I hope is something like a lesson. I ended up watching a video tutorial and right in that they state ‘a course unit which is equivalent to a lesson.’ Perfect! So why not just call it a lesson? I wanted to embed a video and found this to either not be possible or something I could not figure out how to do. All I could get to work was a link to a video on another page (YouTube) which was not what I wanted to happen. The video tutorial went on to explain how to add this to the training course and something about modules but I was so confused about the structuring of a module or unit or course that I gave up.

This brings me to my last, and most successful attempt, which was using LearnDash. I found it easy to jump right into creating my lessons underneath main courses. Every option I was looking for seemed to be listed right where I could find it easily. I was able to create quizzes to go along with my lessons (that actually worked when I tried them!). The only issue here was too much choice. For a beginner, setting up a simple quiz, I was very overwhelmed with the options. I did need to access their support pages and documentation to figure out how to add a certificate but I found what I needed quickly and was able to follow it.

In the end, I felt most comfortable with LearnDash, but none of the tools were as straightforward as I expected. I had to rely on documentation and searches a lot to get things done, and I spent a long time just figuring out basic things.”