Tin Canny Meets Gutenberg

Happy WordPress 5.0 Release Day!

Are you ready for Gutenberg? Or, more importantly, are your plugins?

If you use Uncanny Owl plugins on your LearnDash site, you might be ready. Users of the Pro modules of the Uncanny LearnDash Toolkit, Groups, Continuing Education Credits and Codes plugins are all set with the latest versions available from our site without needing to update. But if you use Tin Canny, make sure to update to version 2.9.9 or higher to use the Tin Canny uploader! Without it, you will not be able to upload your SCORM and xAPI modules to your LearnDash courses.

Tin Canny 2.9.9 isn’t just about Gutenberg though. It’s a big release and the last update before the 3.0 release later this month, so we wanted to talk through some of the changes and what they mean for your site.

Most important is, of course, the Gutenberg uploader for Tin Canny. It’s completely different than what you’re used to seeing for Tin Canny.

Tin Canny Blocks

Uploading modules is now done in Gutenberg using the “Tin Canny Content” block. By clicking that, you can choose to Upload a new module or Select from Library any existing content.

All of the controls you’re used to for your modules are now displayed in the block settings on the right, including the settings you’re used to, like insertion type and dimensions.

Gutenberg Tin Canny Uploader

And that’s it! Making the transition to managing your SCORM and xAPI with Gutenberg might seem strange the first time you do it, but it really is a simple transition once you’ve added 1 or 2 modules.

Outside of the Gutenberg-specific additions, we created a new page to find and manage your uploaded modules. The Manage Content page makes it easy to search through your uploaded Rise, Storyline, Captivate and iSpring modules, as well as preview them and delete them. No more having to dig through the Uploader tab in a post to look through and delete your modules (and we know many people didn’t even know that function existed).

 

There’s a lot more that’s new in the 2.9.9 release; here are some highlights:

  • An easy option to clear Answered and Experienced xAPI records from your database, freeing up space taken by these often less important verbs. (More data management records are coming in 3.0, including resetting Tin Canny data for individual users.)
  • Better support for the H5P Course Presentation content type.
  • Improved time zone support for the quiz reports.

The next big release will be 3.0, so stay tuned for more news on that in the near future!

Easier LearnDash Group Management

Our LearnDash Groups 2.6 release is big. It adds features that make it easier for Group Leaders to add and communicate with group members. That’s right, we added email functions! And there’s new front end group creation, more Theme My Login support, changes to filters… Let’s take a closer look.

Add & Invite Users

Because inviting individual users, uploading users by CSV and enrollment keys weren’t enough for Group Leaders to add users to groups, we listened to your requests and added a new interface to add users in bulk. Rather than having to add one user at a time, now Group Leaders can add multiple users from a single page. For large groups, this addition could save a lot of time.

Email Group Members

For a lot of sites this will be a big improvement. Uncanny LearnDash Groups 2.6 adds a new feature that allows Group Leaders to email their students right from the Group Management page. To use it, there’s a new optional attribute for the [uo_groups] shortcode of “group_email_button”. You need to turn this one on (so Group Leaders can’t suddenly send emails without you knowing about it), so make sure your shortcode looks like this to use the new button: [uo_groups group_email_button=”show”] (plus any other attributes you want to use). Please note that emails sent with this new functionality are sent on behalf of Group Leaders (so the reply-to address will be theirs) and that emails go to all members of the group.

Front End Group Creation

We’ve been reluctant to add this one, but by popular request it is now possible for users to create their own groups in the front end of LearnDash sites. Adding [uo_groups_create_group] as a shortcode to any page adds our Group Creation wizard to the front end, and the group creation form can be used by any user with the Group Leader or Administrator role. Be very cautious about using this shortcode and make sure the page is properly protected, whether it’s by membership plugin or other control, because in most cases you likely won’t want anyone to be able to create groups and add group leaders. It’s a very powerful feature, and we know it will be of use to many sites, but be very careful about access to it.

And There’s More…

Theme My Login 7.x support has been added for registration forms. The shift to version 7 of this plugin has been difficult and we’ve largely stopped using it ourselves, but enough Groups users have it to make this update necessary.

Drop-down lists in the course and quiz reports have been modified so that if there’s a single entry, that entry will be selected by default. That will save Group Leaders time and improve their user experience. The drop-down lists are now formatted to appear inline, rather than stacked, to save valuable page real estate. If you’ve applied custom CSS styling to these, you’ll want to check to ensure they still look good after you update.

Developers will appreciate some behind-the-scenes changes for easier modification of the plugin and support for custom roles in our permissioning model. Bulk discounts have improved tax support when tax is included in the product price, and a number of other fixes are included to improve general reliability and usability of the plugin.

All set to start using Uncanny LearnDash Groups 2.6? Make sure your license is up to date and then run the update on your site!

What’s New in LearnDash Toolkit Pro 2.5?

Yesterday’s release of the Uncanny LearnDash Toolkit Pro 2.5 update included a few very highly requested features, so we wanted to highlight exactly what’s now available in a blog post.

LearnDash Reset ButtonFirst up, there’s a brand new module: LearnDash Reset Button. We kept this one simple, but it’s powerful. When triggered, it allows users (or the system) to completely reset a user’s progress in a course. An example of this might be when a user has already completed a course but must retake it. In those situations the user may want to reset their progress first so they can start again, and this button is a great way to do that. Want to make sure users only see the button after they’ve completed a course? Wrap it in the shortcode! This module also includes a PHP function to reset course progress, handy for developers that perhaps want to reset progress when users repurchase a product. Learn more about this new module over in our Knowledge Base.

We also have big changes for our Enhanced Course Grid module, one of our most popular modules in Pro.  Users have long requested that there be a way to resume courses. The most recent release of our free LearnDash Toolkit, version 2.5, includes a course-specific Resume button shortcode that outputs a button that takes users back to where they left off in a specific course.  To make that button super easy for users to access, we’ve added a new attribute (resume_course_button=”show”) to the Enhanced Course Grid that displays a course-specific Resume button beneath the course when resume data is available. We’ve also added a second attribute (start_course_button=”show”) that displays a Start button for users that haven’t yet begun courses.  Two big notes for this one: You must have the Resume toolkit module enabled to use the new resume attribute, and if no resume data exists for the user for that course then no button will be displayed. This means that if you turn this on, an existing user with 50% progress in a course wouldn’t see any button because resume data at the course level only gets tracked after you install the Pro 2.5 update. Confused? Check out the Knowledge Base article for more info. Also note that you must update to version 2.5 of the Uncanny LearnDash Toolkit as well to use these new resume features.

To go along with this new resume functionality is a new shortcode included in the free Toolkit plugin. With the resume module in 2.5 we’re adding this new shortcode: [uo_course_resume course_id=”x”]. You can add that shortcode to any page (including course pages!) and it will allow users to return to the lesson, topic or quiz they last visited. It’s just like our regular resume button, except instead of being global this one applies to specific courses. The Knowledge Base article covers how to use it.

And one more big change: you can add category drop-downs to the Enhanced Course Grid! Use the categoryselector=”show” attribute to filter by WordPress category and course_categoryselector=”show” to filer by LearnDash course category. Make sure you use the right one! WordPress vs. LearnDash course categories are a frequent source of confusion for course grid users. The new attributes are included in the Knowledge Base article for the Enhanced Course Grid.

The 2.5 update includes a a few other changes, like the Import LearnDash Users module now supporting Display Name and better Gravity Forms detection.

 

New Front End Quiz Reports

One of our Tin Canny customers came to us with a great question: How can my instructors and students easily track performance across both LearnDash AND xAPI/SCORM modules? Tin Canny does a pretty good job with LearnDash results, but xAPI results are harder to analyze and none of our existing reports combine all scores together (LearnDash and xAPI). So, to help that client out, we created some new reports—and those new reports are now available in version 2.9.5 and higher of Tin Canny.

The first new report is a front end Group Leader quiz report. Administrators and Group Leaders can use the report to view LearnDash quiz and all scores tracked by Tin Canny (so H5P, iSpring, Adobe Captivate, Articulate Storyline and Rise) by group and by course. That means no digging into the Tin Can report in the back end and reconciling it with LearnDash quiz scores to get consolidated results. It’s all in a single report. Better yet, if quiz statistics were turned on for LearnDash quizzes, the new report also links to detailed quiz results, including a user’s answers and quiz times. (No such reports are available for Tin Canny scores, unfortunately, as those are LearnDash-only reports.)

Tin Canny Group Quiz Report

Tin Canny users with version 2.9.5 or higher installed can add the new report to a page by using this shortcode:

[uo_group_quiz_report]

The second new report, also for the front end, outputs all scores for a particular user. Available to students themselves, Group Leaders and administrators, this one lists all LearnDash and scores tracked by Tin Canny across all courses.

Here’s the shortcode for the user quiz report:

[uo_individual_quiz_report]

Tin Canny User Quiz Report

The best part of the two reports is that they can be linked together for admins and Group Leaders using a shortcode attribute.

Here’s how to use it:

[uo_group_quiz_report user_report_url="%URL%"]

Just replace the URL in the example above with the URL that shows the new user report. And by doing that, all user names in the Group report will be linked to the user report with that person’s results. These 2 reports together make for a very powerful drill-down reporting solution for quiz scores, especially when paired with the CSV and PDF export options.

Please note that these 2 new reports are included in the Tin Canny LearnDash Reporting plugin only. It can be used without SCORM/Tin Can data as a LearnDash-only quiz reporting solution, but it is still only included in the Tin Canny plugin.

Build Better Group Leader Front End Experiences

It’s really satisfying to see our LearnDash plugins grow and mature. Uncanny LearnDash Groups is still (at the time this article was published) our newest plug public plugin, and with the recent 2.x changes, we have reached a point where development is quite stable. It’s great to see how happy people are with the product too; in the last week alone, customers wrote to tell us that the Groups plugin is “absolutely awesome” (Jonathan B) and a “very useful addition [that I] strongly recommend” (Julia R).

As it is a very complex plugin, however, we know that some users still find it challenging to create great user experiences around it on their sites. Recently we have particularly seen an uptick from customers asking how to make things easier for Group Leaders, especially how they should manage groups both post-purchase and on an ongoing basis. How should I get new Group Leaders to the Group Management page? How do I separate Student and Group Leader experiences? How do I teach Group Leaders what they should be doing? These questions and others do pose a challenge for some of our plugin users, especially because designing the right workflows aren’t necessarily part of the plugin itself.

In this blog post we outline some of the recommendations we often suggest to people, along with some simple code samples that might improve your workflows. Not all of these suggestions are likely to be relevant to your site, but maybe within the suggestions you’ll find some ideas about how the Uncanny LearnDash Groups plugin, along with some complementary solutions, can improve the Group Leader experience on your sites.

Restrict Menus by Role

Group Management RestrictionThis is really a key starting point. With our Groups plugin there are some pages only intended for Group Leaders, and it’s important not to expose them to regular students and other roles. For setting this up we like the Nav Menu Roles plugin, which allows you to set up your menu entries so that you can control what people see based on their role. Set up an entry for the Group Management page that only Group Leaders can see; this will help a lot. (If you use that plugin, make sure you disable the Menu Item Visibility module in the Uncanny LearnDash Toolkit if you use it; they will conflict otherwise.)

Use Redirects

Login redirects are great to get Group Leaders straight to the Group Management page. To make sure other login redirects are overridden and that you target Group Leaders only, we like Peter’s Login Redirect. Set a Group Leader role redirect to your Group Management page and you’re all set.

But what about post-purchase? WooCommerce signs the user in automatically after a purchase but takes them to a confirmation page. If you want to take the new Group Leader (as this applies to purchases of group products only) straight to the Group Management page, add this line of code to the functions.php file of your child theme:

add_filter( ‘uo_redirect_after_checkout’, ‘__return_true’ );

Add a Link to the Group Management Page

An underused shortcode included in our plugin takes users directly to the Group Management page:

[uo_groups_url text="Button Text"]

Just drop that shortcode onto a page (we like Learner Dashboards, or wherever users are most likely to spend most of their time), and it will display a link to the Group Management page. The link is only shown to Group Leaders, so you don’t have to worry about restricting who can see the link!

Send Instructions

It’s very helpful to send instructions to your new Group Leaders to help them get started after a purchase. This can be pretty hard though, since you don’t want instructions going to regular students too after buying a course product. Our preferred solution here is to use an integration with a CRM system, as we often have something set up anyway to pass details over and send automated email campaigns. If you do use one, and you turn on the “Automatically include Group Course products in Group License purchases” setting the the Uncanny LearnDash Groups settings page, you can add tags to your Course Products to trigger emails to anyone that buys them. Since that would normally be Group Leaders only, setting up an automation to trigger welcome instructions on those tags is a great way to send communications.

A plugin WooCommerce Follow Ups, could also be used and is simpler, but we prefer the CRM approach if you can do it.

Add Instructions to the Group Management Page

Getting Group Leaders to the Group Management page is easy with some of the instructions above, so if they’re going there anyway, consider adding some instructions to the top of the page.

Get Help From a Developer

There are some other code-based options available, but to execute them properly you’ll need a pretty good Developer. You could potentially modify the WooCommerce receipt email to include instructions based on the products purchased, or modify the confirmation/thank you page to include messaging and buttons based on what the user purchased. Both of these approaches require coding and can be complex to manage.

Whatever options you choose, we hope the guidance above does give you some ideas about how to set up your own workflow for Group Leaders as they manage their groups in the front end. And if you have any ideas that we may have missed, let us know about them in the comments below!

Uncanny LearnDash Groups: Part 2

Uncanny LearnDash Groups users: This is the update you’ve been waiting for.

Everyone else: Time to get excited about LearnDash Groups.

Version 2.0 of the Uncanny LearnDash Groups plugin is out, and it’s a huge upgrade. Version 2.0 includes LearnDash Group Subscription support, major UI changes, many new shortcode parameters for front end customizations, better translation support, and over a dozen other important fixes and updates.

Yes, there is finally support for WooCommerce Subscriptions! Certainly our most requested feature, you can now collect recurring payments for group purchases. Note, however, that we only support subscriptions for Group License products created by an administrator, not custom Group Licenses built by customers using the [uo_group_buy_courses] shortcode, and once purchased, the number of seats and courses for the group cannot be changed by Group Leaders. We’re constrained by limitations with the Subscriptions plugin, but we’ll be looking into possible solutions for those barriers in the next few months.

LearnDash Group Subscription

Our documentation will be updated shortly to fully explain subscription use, but if you’re a current plugin user and want to get started, create the LearnDash Group Course products as you normally would, then use a Simple Subscription product (instead of a Group License product) to bundle the courses and sell the group with recurring payments. The screenshot above will hopefully point you in the right direction.

We also have a new introductory screencast to help out if you’re new to Groups or need more information about how to set it up and coordinate things on your site. It’s a long video, but setting up group licensing of courses is a fairly complex process, so watching it will help new users get a quick start with the plugin.

The front end LearnDash Groups pages (Group Management, Progress Report and Quiz Report) have  all been completely rebuilt. In the original plugin we tried to use some common theme styles in the plugin so that the pages would inherit styles and better fit in with the theme, but it just didn’t work as well as we hoped. Now we are adding our own styles so that we can make sure that everything looks good across all sites, without needing any knowledge of CSS or having to worry about conflicts. In the back end you can even control the colour palette! Here’s a sample of how things look now:

LearnDash Group Management

Existing plugin users will find that their pages look quite different after updating to 2.0. The location of some elements, including buttons, has also changed so that they have better context.

The Group Management page is now extremely customizable. Maybe you don’t want your groups to use enrolment keys or for Group Leaders to be able to add additional Group Leaders. Now you can change what’s on the page very simply, as the [uo_groups] shortcode has a dozen new parameters to control almost everything about the page. Have a look at this knowledge base article to better understand how you can now control everything. To see what else has changed in this release, have a look at https://www.uncannyowl.com/knowledge-base/uncanny-learndash-groups-changelog/, especially if you’re an existing user.

Tin Canny Users: Last week also saw a big (though less exciting) update for non-English users of the Tin Canny plugin. The most recent release made 99 new text strings available for translation, making the plugin much more translation-friendly and more usable on sites that aren’t in English.

Finally… We will soon be celebrating the 5 year anniversary of Uncanny Owl. It’s been a very long time since we released a new plugin, but to coincide with our anniversary we’ll be releasing our most ambitious product yet. We’re all very excited to share more news about it soon, as we’re confident that it will completely transform how you configure your WordPress sites. Stay tuned!

Improve Your LearnDash Course Sales Workflow

Do your visitors get confused about how to buy your course?

Course pages in LearnDash tend to have two audiences: enrolled students and potential students. That can make things a bit confusing. Do you tailor the content and experience to the learner, or do you make the experience more intuitive for prospective buyers? You can absolutely do both (the visitor and student shortcodes come in handy here), but it does make managing the content and using page builders more difficult.

In the latest version (2.3) of our free Uncanny LearnDash Toolkit plugin, we added a very simple new module that can make things easier for some sites. What it does is simple: If a person trying to access a course page is not enrolled in the course, the system redirects them to another URL. That’s it, the behaviour is very simple.

course redirect

Where this comes in really handy though is with both our course grid module in the Toolkit Pro plugin as well as the LearnDash grid add-on. Using either of those, now you have a way to control the behaviour when users click courses in the grid. If they click a course in the grid and they have access, the users get to the course. If they’re not enrolled, they go straight from the grid to a sales page (or to checkout, or to whatever other page you define). No middle step, no making the course page work for 2 different audiences.

Another great use of the module is redirecting a user to a page that explains that he or she doesn’t currently have access to the course with instructions on how to become enrolled. This can  be a single global page, making maintenance much easier than editing all course pages.

Using the new module is simple. Just turn it on from the Toolkit settings page, and in course edit pages, add the URL you want to redirect users to when they’re not enrolled. That’s it! If you want the redirect to work for some courses and not others, just add a URL for courses where you want to redirect people that aren’t enrolled and leave the URL blank if you want all users to be able to access the course page.

We hope this new workflow option improves your conversions and the user experience.

Front End Reporting Solutions for LearnDash

It’s been a constant request from LearnDash users ever since we started building WordPress platforms: “We need better front end reports.” End users don’t like CSV files. They also get confused in the back end, even if they’re Group Leaders. LearnDash users needed a better way.

Gradually some viable solutions started to appear in the LearnDash community. ProPanel add front end widgets a few months ago, and third parties like 247digitalclassrooms started to fill in some gaps. We added some compelling options ourselves, but after a year of countless requests, we’re finally bringing our most requested reports to the front end.

Front End Reporting Comes to Tin Canny

Version 2.2 of our Tin Canny LearnDash Reporting plugin adds the Course and User reports you’re familiar with in the back end to the front end. Group Leaders can finally access drill-down summary and student reports without requiring access to the back end of your WordPress site. On top of that, we have also added a filter for groups, so Group Leaders no longer have to look at combined data for all of their groups if they don’t want to.

It’s super simple to use the new front end reports. Simply drop a [tincanny] shortcode on any page of your site. If the user viewing the page is a Group Leader or Administrator, they’ll have access to the same reports they’re used to on the back end. (For technical reasons, the Tin Can report, which is separate from the Course and User reports, is still only available in the back end.) This is what it looks like:

Tin Canny Front End Reports

Of course, the reporting tables appear below that, but we didn’t want to make the image too large here. When you do add the shortcode, we strongly recommend that you only use it on full-width pages and that no other content be on the pages. It’s a big report.

Other Front End Reporting Solutions

Tin Canny was what people have been asking for in the front end the most, but we do also have several other powerful front end reporting options.

Our Continuing Education Credits plugin adds a comprehensive public report that allows anyone to see and audit LearnDash course completion records. It’s explained in more detail here. Then our LearnDash Groups plugin adds front end course completion and quiz reports for Group Leaders. For both of those plugins, they do work as standalone reporting tools; you don’t need to issue CEU credits or sell group licenses if you just want the reports.

We’re pleased to be able to offer a diverse selection of front end reporting options for LearnDash users now, and we know our Tin Canny users will be especially excited about the new report shortcode!

Updates? We’ve Got Updates!

It’s been a very busy 2 weeks in the LearnDash world.

Version 2.5 of LearnDash was released on November 7, bringing long-awaited features like a visual course builder and the ability to include lessons and topics in multiple courses. The latter is a fundamental change to how courses can be organized and developed.

For LearnDash users, the changes bring welcome new features and far more flexible ways to author courses. And for plugin developers like us, we have to rethink how course relationships work and find new solutions when there are significant architectural changes to the plugins we depend on.

For the last 2 weeks we’ve been working tirelessly to add proper support for LearnDash 2.5 to our plugins. This wasn’t always easy, as LearnDash changed how lessons, topics and quizzes mapped to courses—and with plugins as big and as complex as ours, we have a lot of code that has to look up course relationships, labels, and more.

We released a significant update to the Uncanny LearnDash Toolkit 2 weeks ago that addressed several 2.5 related issues and also added a simple new module for easy User Switching. That plugin has now crossed the 8,000 active installs barrier (yay!) and no issues tied to 2.5 have been reported. (As an aside, with 8,000 installs and only 6 reviews, I think we may have one of the lowest review to install ratios in WordPress; if you use the plugin, don’t forget to leave your review!)

Last Wednesday we released a big update to Pro, addressing multiple 2.5 issues (with the timer, course expiry, group drip and autocompletion) and we added a completely new way to track time for courses. It’s still in beta, so we suggest testing it on Staging sites first, but it’s a more efficient way of recording time and can potentially reduce the resources used by our old timer by 80%. On less powerful sites where resources were already being pushed, we do suggest giving the new tracking method a try. And because it’s lighter, we do now allow a polling interval down to the 5 second level for increased accuracy (the previous limit was 10).

LearnDash Timer

The update to our LearnDash Groups plugin was released on Thursday. It’s less related to 2.5 but covers a lot of fixes to our Groups plugin. It’s still our newest plugin and it receives the most feedback and suggestions for improvement, so if you use Groups, you should absolutely update. There are a lot of improvements.

The Tin Canny update with LearnDash 2.5 fixes was released earlier today. We had a lot of complications with this one to make sure course attributions were correct with the 2.5 changes, so it unfortunately took the longest to release.

That’s it! Those were a lot of plugin updates for us in a short span. Let us know if you do notice any new issues related to LearnDash 2.5 and we’ll happily take a look.

How We Made LearnDash 75 Times Faster

Important: This article examines how we modified certain parts of LearnDash to improve performance on high volume/enterprise sites. LearnDash itself is not slow, but some parts of it are designed for convenience rather than performance. For the vast majority of LearnDash sites, the optimizations discussed below are unnecessary and could be dangerous. This article is intended for very large sites where scalability and performance are critical. 

LearnDash Performance TuningWe see a lot of projects that really push LearnDash to its limits, and for a sub-$200 WordPress plugin, those limits are surprisingly high. LearnDash is generally an efficient plugin that serves the vast majority of its customers very well, but every so often, an organization wants to see how well it can really perform at scale.

The typical LearnDash site we see might expect up to 15 simultaneous learners (even on sites with upwards of 1,000 users) and perhaps 200 LearnDash posts. We  support several, however, that have hundreds of simultaneous learners and thousands of LearnDash posts (courses, lessons, topics and quizzes). At that level, everything gets harder and keeping everything running smoothly requires tuning performance wherever we can.

What we observed on extremely large sites, especially after total courses crossed the 100 level, total quizzes exceeded 1,000 and we started going over the 100 simultaneous user mark, was that performance significantly deteriorated in 3 main areas: user profile pages in /wp-admin/, quiz listing pages, and quiz submissions. In some cases users and admins were even seeing 503 errors, which is catastrophic for any live LearnDash site, but especially ones with hundreds of people online at the same time.

In user profiles we found that database operations could often exceed 150 seconds of processing times and require 10s of thousands of SQL queries to render (perhaps 200 queries is typical on most pages). What we found was that the “Course Progress Details” section of the profile page was looping through all courses to retrieve records for the user and the courses for every course the user was enrolled in. It was pulling everything down on page load too, so even if an admin were just going in to change a password or something else unrelated to LearnDash, the site would be affected by severe load.

Loading all of this data does make things a lot more convenient for admins, and in most cases this section wouldn’t be an issue. But when loading tens of thousands of records on a site with lots of courses, it’s a problem. Fortunately, our developers were able to override this section completely with an alternative solution that combines queries and reduces loops when the admin drills down into that specific course. The approach means we only load data when it’s needed and only as much as is needed. We also removed the edit links to LearnDash posts from the profile page, which are generally rarely used, and we added some transients to speed things up further.

The net effect of these changes?

We took profile page load time for admins from 150 seconds to 2 seconds. 

The difference was night and day. It made profile pages usable again.

The list of quizzes inside LearnDash was another interesting performance challenge. With well over 1,000 quizzes (and thousands of lessons and topics) on a site, just listing the quizzes was a 120 second exercise that adversely affected learners on the site at the same time. Why so slow? Well, LearnDash adds filters to quizzes to make it easy to choose a course (or something else) and only see quizzes under it. But to populate that list of filters, it needs to look up all the associations between quizzes, courses, lessons and topics—which takes a long time on a big site.

This was a case where we really gave up convenience for performance. We didn’t care about only showing objects with quizzes in the filters. So instead we just loaded all courses, then on course selection in a filter we showed all lessons and topics. If the administrator filtered and there were quizzes, great. And if not, we just showed a message that there were no quizzes. That change took loading the quiz listing from 120 seconds to 2 seconds. It was well worth the slight inconvenience.

LearnDash Quiz Performance

Next we looked at quiz submission performance. On sites with a lot of content, saving quiz answers that include essay questions can be extremely slow—in the case of a site with 120,000 rows in the wp_posts table, it was taking 35 seconds to save quizzes with essay questions. Obviously that was trying learner patience and slowing down the site. To address this one we took a shortcut, and instead of looking for a matching post title or name to avoid duplicates when saving an essay answer, we skipped the check and just forced a unique post name.

That new approach took quiz saving time from 35 seconds to 3 seconds.

As you can see from our results, it is possible to significantly increase LearnDash performance on big sites. What’s especially nice is that LearnDash allows us to make 2 out of the 3 overrides above without changes to LearnDash code (and we’re hoping the third can be handled outside of LearnDash in a future LearnDash release if additional filters are added). This means it’s easy to bundle our performance improvements into a portable plugin and the optimizations will survive updates.

Another factor that did help us really push LearnDash performance on these sites was assistance from Pressidium, who are hosting the sites. They went out of their way to help us look at opportunities for performance enhancements and they applied some database changes to their environment to improve performance further.

Are you trying to improve LearnDash performance on a big site? We can help.