Sensei LMS 3.5 – Export Courses, Lessons & Questions

Sensei LMS 3.5 has just been released and brings with it the ability to export courses, lessons and questions. This means you can export course content from one site and import it into another one, making it easier than ever to transfer courses between Sensei LMS sites.

Exporter

Sensei’s new export functionality is available from the Sensei LMS > Export menu. This first iteration supports exporting courses, lessons and questions in zip format. The downloaded zip file contains individual CSV files, one per selected content type:

Export content to a CSV file

Sample Course

We’ve also added a new option to the setup wizard to install a sample course. This course is created in draft status so that it’s not publicly available, and walks you through how to get started with Sensei LMS:

Install a sample course

You can reach the setup wizard at any time by going to Courses > All Courses, clicking the Help tab at the top, and then clicking the Setup wizard button:

Launch the setup wizard

What Else is in this Release?

  • Courses with any status are displayed in the Course Prerequisite dropdown. Previously, only published courses were listed.
  • We fixed an issue with duplicate content sometimes being imported.
  • We fixed an error in the setup wizard that occurred when navigating to a previous step.

For Developers

If you’re a developer, here’s what you need to know about Sensei LMS 3.5.

Deprecated Code

  • includes/3rd-party/wordpress-importer.php – Deprecated the entire file.

To update, please head on over to DashboardUpdates in the WordPress admin.

Please note: While we have thoroughly tested this release, it’s always possible that we’ve missed something. We recommend that you test the update on a staging site before updating your live site.

WooCommerce Paid Courses 2.1 – Remove & Restore Enrollment

In WooCommerce Paid Courses 2.1, it’s easier than ever to remove a learner’s enrollment. No more searching for orders — learners can now be removed with a single click! And restoring their enrollment is just as easy!

With this release, we are also bumping the minimum supported version of WordPress to 5.2 and PHP to 7.0 to match WooCommerce.

Remove Enrollment

For enrolled learners, a new Remove Enrollment link is displayed when hovering over a learner in Learner Management. Clicking this link removes the learner from the course, revoking their access. The status of any order, subscription or membership associated with the learner’s enrollment is unaffected.

Please note that if the course is tied to a product, subscription or membership, and the learner purchases that product / subscription / membership again, they will be re-enrolled in the course:

Learner Management - Remove Enrollment

Restore Enrollment

Unenrolled learners who previously purchased a course can have their enrollment restored by clicking the Restore Enrollment link. This will re-enroll the learner in the course, and enrollment will once again be controlled by the associated order / subscription / membership:

Learner Management - Restore Enrollment

Enroll

Unenrolled learners who do not have an active order / subscription / membership associated with their enrollment (for example, for a free course or one where an administrator enrolled them directly via Learner Management) can be re-enrolled by clicking the Enroll link. Fundamentally it does the same thing as restoring an enrollment — it enrollers the learner in the course — only there is no order / subscription / membership controlling enrollment:

Learner Management - Enroll

We hope these changes help to streamline the management of your learners!

For Developers

If you’re a developer, here’s what you need to know about WooCommerce Paid Courses 2.1.0.

Deprecated Code

  • Sensei_WC_Paid_Courses\Course_Enrolment_Providers\WooCommerce_Simple::maybe_trigger_order_trash_change

To update, please head over to DashboardUpdates in the WordPress admin.

Please note: While we have thoroughly tested this release, it’s always possible that we’ve missed something. We recommend that you test the update on a staging site before updating your live site.

Sensei LMS 3.3 – Import Courses, Lessons & Questions

Sensei LMS 3.3 has just been released and brings with it the ability to import courses, lessons and questions! You can also use the importer to update existing course content en masse.

Importer

Sensei’s new import functionality is available from the Sensei LMS > Import menu. This first iteration supports importing courses, lessons and questions in CSV file format:

Import content from a CSV file

A future release will add export functionality, making it even easier to transfer course content between Sensei LMS sites!

To download CSV files with sample data, or to learn more about the expected file format, please see our import documentation.

What Else is in this Release?

  • Appended random text to the file name of file upload questions to make it more difficult for external users to view them.
  • Added new CSS classes for preview and completed lessons not in a module to allow for easier element targeting.
  • Fixed an issue with the setup wizard Features step not saving if nothing was selected.

For Developers

If you’re a developer, here’s what you need to know about Sensei LMS 3.3.

New Filters

  • sensei_import_csv_delimiter – Set the default delimiter to use when importing CSV files.
  • sensei_import_csv_delimiter_options – Specify the different delimiters that will be tried when importing CSV files.
  • sensei_learner_enrolled_courses_args – Customize the query arguments used to fetch the courses a learner is enrolled in.

New Action

  • sensei_data_port_complete – Fires when the import job completes.

Deprecated Code

  • Sensei_Grading::load_data_object – Use new Sensei_Grading_Main or new Sensei_Grading_User_Quiz

To update, please head on over to DashboardUpdates in the WordPress admin.

Please note: While we have thoroughly tested this release, it’s always possible that we’ve missed something. We recommend that you test the update on a staging site before updating your live site.

Sensei LMS 3.2

Sensei LMS 3.2 was released this week. In addition to fixing several bugs, it adds WooCommerce Paid Courses and Sensei Content Drip to the Features step of the setup wizard.

What’s in this Release?

  • Both admins and the lesson author can now view a quiz for a lesson with an unmet prerequisite.
  • Added the sensei CSS class to the course results, learner profile and teacher archive pages.
  • Switched to a more semantic heading structure on the course results page.
  • Added missing taxonomy labels.
  • Fixed an incorrect parameter being passed to the has_term function.
  • Added paid extensions to the setup wizard.

For Developers

If you’re a developer, here’s what you need to know about Sensei LMS 3.2:

Template File Changes

  • templates/course-results/lessons.php – Use a more semantic heading structure.

Deprecated Code

  • sensei_the_excerpt

To update, please head on over to DashboardUpdates in the WordPress admin.

Please note: While we have thoroughly tested this release, it’s always possible that we’ve missed something. We recommend that you test the update on a staging site before updating your live site.

Sensei LMS 3.1

Sensei LMS 3.1 has just been released. The primary focus of this release is a new setup wizard to help users get started creating courses straight away.

With this release, we are bumping the minimum supported version of WordPress to 5.0. This means we will no longer be actively supporting the classic editor.

Setup Wizard

The setup wizard has 4 simple steps that can be completed in just a few minutes:

  • Welcome – Brief overview of the wizard and an opportunity to opt in to usage tracking.
  • Purpose – We’d love to learn more about why you’re interested in offering online courses.
  • Features – Facilitates the installation of Sensei LMS’s most popular extensions.
  • Ready – Basic setup is complete. From here, we provide a few recommendations on what to do next.
Setup Wizard - Welcome

The setup wizard is displayed as soon as Sensei LMS is activated, but it’s also available to administrators at any time from the new Help tab on the Courses page:

Run setup wizard

What Else is in this Release?

  • Added some missing translations
  • Added the Date Completed field to the Learner Management page
  • Added a filter for enabling/disabling enrolment related background jobs
  • Change “Lessons” to “Lesson” for single lessons in a course or module
  • Removed the Most Used tab from Course Modules
  • Fixed the course dropdown width on the lessons page
  • Fixed a PHP warning on the single course page

For Developers

If you’re a developer, here’s what you need to know about Sensei LMS 3.1.

Template File Changes

  • templates/course-results/lessons.php – Display “Lesson” if there is only one lesson in the course.
  • templates/single-course/modules.php – Display “Lesson” if there is only one lesson in the module.
  • templates/single-course.php – Initialize the loop.

New Filter

  • sensei_is_enrolment_background_job_enabled – Check if a specific enrolment background job is enabled.

Deprecated Code

  • includes/email-signup/template.php
  • Sensei_Email_Signup_Form – Entire class has been deprecated
  • Sensei_Admin::admin_install_notice – Use Sensei_Onboarding::setup_wizard_notice
  • Sensei_Admin::admin_installed_notice – Use Sensei_Onboarding::setup_wizard_notice
  • Sensei_Admin::admin_notices_styles – Use Sensei_Onboarding::setup_wizard_notice
  • Sensei_Admin::create_page – Use Sensei_Onboarding_Pages::create_page
  • Sensei_Admin::create_pages – Use Sensei_Onboarding_Pages::create_pages
  • Sensei_Admin::install_pages – Use Sensei_Onboarding_Pages::create_pages
  • Sensei_Admin::install_pages_output – Use Sensei_Onboarding_Pages::create_pages
  • Sensei_Main::load_email_signup_modal
  • Sensei_Usage_Tracking_Base::enqueue_script_deps
  • Sensei_Usage_Tracking_Base::handle_tracking_opt_in – Use Sensei_Onboarding::setup_wizard_notice
  • Sensei_Usage_Tracking_Base::hide_tracking_opt_in – Use Sensei_Onboarding::skip_setup_wizard
  • Sensei_Usage_Tracking_Base::is_opt_in_hidden – Use Sensei_Onboarding::setup_wizard_notice
  • Sensei_Usage_Tracking_Base::maybe_display_tracking_opt_in – Use Sensei_Onboarding::setup_wizard_notice
  • Sensei_Usage_Tracking_Base::opt_in_dialog_text_allowed_html – Use Sensei_Onboarding::setup_wizard_notice
  • Sensei_Usage_Tracking_Base::output_opt_in_js

To update, please head on over to DashboardUpdates in the WordPress admin.

Please note: While we have thoroughly tested this release, it’s always possible that we’ve missed something. We recommend that you test the update on a staging site before updating your live site.

Quiz Improvements

The Sensei LMS team is currently hard at work on a couple of features that will ship over the next few releases – a setup wizard to walk new users through configuring Sensei, and adding the ability to export and import course content.

Although a bit further out, we’re also starting to look into making some much-needed improvements to quiz functionality. We’ve prepared several design concepts and are looking for your feedback on which you prefer and why.

Pagination

The current paradigm of displaying all questions to the learner on a single page can be problematic. This is especially true when a quiz contains hundreds of questions.

To prevent overwhelming the learner, we are planning to show each question on its own page. This will require displaying buttons to enable the learner to move to the next question, and pagination so that they can view their progress.

Stepper – Option 1

Stepper pagination would be displayed either above or below the question, while on a mobile device it would be displayed along the right side:

Continue and Back buttons would be added below the question to enable the learner to move back and forth in the quiz, and the Contact Teacher button would be moved so that all actions are in the same location:

Traditional – Option 2

Traditional pagination could also be displayed either above or below the question:

Pagination above the quiz

If displayed below, then the breadcrumbs would need to move to above the question:

Pagination below the quiz

Timer

We are also planning to introduce a quiz timer, so that learners have a limited amount of time in which to complete the quiz.

Full-width – Option 1

The full-width timer would be fixed at the bottom of the page. Although fairly minimalistic, a full-width timer would enable the learner to keep a close eye on how much time they have left:

Circular – Option 2

The circular timer would be fixed at the bottom right corner of the page. This is a classical approach to a timer that may feel less intrusive to learners:

We’d love to hear your thoughts on these design concepts! Please leave your feedback in the comments below.

Sensei LMS 3.0 & WooCommerce Paid Courses 2.0

Today we’re releasing Sensei LMS 3.0 and WooCommerce Paid Courses 2.0. These are both major releases that overhaul course access and simplify the rules for adding and removing access for learners.

Sensei LMS 3.0 and Sensei with WooCommerce Paid Courses 3.0.0.2.0.0 introduce the concept of course enrollments. When updating to the new version, a migration job will run that enrolls existing learners in courses. This means that any learner who is listed in Learner Management for a particular course prior to the migration will be enrolled in that same course after the migration.

Note: As this is a major release that affects course access, we strongly recommend that you test the update on a staging site before updating your live site. We also recommend that you take a backup of your live site prior to updating.

For sites running Sensei LMS + Sensei with WooCommerce Paid Courses: For sites that are running both Sensei LMS and Sensei with WooCommerce Paid Courses, we strongly recommend updating Sensei with WooCommerce Paid Courses first, followed by Sensei LMS. Updating Sensei LMS first would mean that learners would not have access until Sensei with WooCommerce Paid Courses was also updated.

Course Enrollments

Course enrollments make it possible to separate course progress from course access. This means that a learner can be unenrolled from a course while still keeping their existing progress intact. If that learner later re-enrolls in the course, they can continue from where they left off.

Learners can be removed from a course by clicking Remove manual enrollment or re-enrolled by clicking Manually enroll learner:

Screenshot of Learner Management page

WooCommerce Paid Courses

For paid courses, there is an important distinction between learners who were enrolled in a course because they purchased it, and those who were manually enrolled by an admin or teacher (i.e. a teacher or admin added the learner to the course even though they did not purchase it). There is a filter on the Learner Management page that can be used to view only those learners who were manually enrolled:

Special Considerations for WooCommerce Memberships

Migrating Active Memberships with Cancelled Orders

For those using WooCommerce Memberships to grant access to courses, you may see the following notice after upgrading:

In previous versions of Sensei with WooCommerce Paid Courses, a learner with an active membership and a cancelled order was not given access to the membership’s courses. This behaviour may be contrary to what you would expect, so as of Sensei with WooCommerce Paid Courses 3.0.0.2.0.0, all learners with an active membership and a cancelled order will have access to the membership’s courses. If you would like to change this behaviour for existing memberships, click the View Active Memberships with Cancelled Orders button and change the status of the memberships on that page to Cancelled.

Migrating Inactive Memberships

The default enrollment migration behaviour for learners who were granted access to a course via a membership is to enroll any learner who is listed in Learner Management for a particular course, regardless of the status of their membership. This means that learners with memberships that are paused, expired, or cancelled, but who had access to the course(s) associated with that membership prior to the migration, will still be enrolled in and have access to the course(s) after the migration.

If this is not the behaviour you desire, and would prefer NOT to enroll learners in courses if their associated membership is paused, expired, or cancelled, then please follow these instructions before updating to Sensei with WooCommerce Paid Courses 3.0.0.2.0.0. It’s important to be aware that this will remove access to courses for learners with memberships that are paused, expired, or cancelled:

  • Install and activate the Code Snippets plugin.
  • Add a new snippet that contains the following code:
    • add_filter( 'sensei_wc_paid_courses_migration_inactive_memberships_provide_manual_enrolment', '__return_false' );
  • Update Sensei with WooCommerce Paid Courses.

Improved Support for Twenty Twenty

We’ve improved support for the Twenty Twenty theme to ensure that Sensei LMS now works well across all default WordPress themes:

Developers: For new hooks, deprecations and template file changes, please see our previous beta release posts – Beta 1, Beta 2, Beta 3 and Beta 4.

When you’re ready, head over to DashboardUpdates to update Sensei LMS or Sensei with WooCommerce Paid Courses from within WordPress.

Sensei LMS 3.0 & WooCommerce Paid Courses 2.0 Beta 4

Today we’re releasing Sensei LMS 3.0 Beta 4 and WooCommerce Paid Courses 2.0 Beta 4, which we are hopeful will be the final beta prior to the production release.

We hope that the fact that we’ve released 4 betas helps to highlight the importance and size of this release, and encourages everyone to do some testing on their staging sites before updating their live sites.

Sensei LMS 3.0

Here’s what’s new in Beta 4:

  • Add multisite support for course enrolments.
  • Delete provider journal data when plugin is uninstalled.
  • Display a notice to remind admins to upgrade WooCommerce Paid Courses to 2.0 for sites that are running Sensei LMS 3.0 and Sensei with WooCommerce Paid Courses 1.x. For sites running both plugins, we strongly recommend updating Sensei with WooCommerce Paid Courses before Sensei LMS.
  • Made a change to use an unfiltered method when checking whether or not a learner has started a course. This change will impact sites with code customizations that leverage the sensei_user_started_course filter, and means that this filter should no longer be relied on to provide access to a course. If you are currently doing so, please consider either switching to a custom enrolment provider (example here), or leveraging hooks in the relevant third-party plugin (i.e. WooCommerce, WooCommerce Subscriptions or WooCommerce Memberships).

You can download Sensei LMS 3.0 Beta 4 here.

WooCommerce Paid Courses 2.0

We renamed the sensei_wc_paid_courses_migration_ended_memberships_provide_manual_enrolmentfilter introduced in Beta 3 to sensei_wc_paid_courses_migration_inactive_memberships_provide_manual_enrolment, and simplified its logic such that it will block users with inactive memberships from being manually enrolled when the migration runs, regardless of the status of the associated order.

Testing

As always, please test the beta release on a staging site and not your live site. If you don’t have a staging site, you can use the WP Staging plugin to create one.

If you’ve already tested a previous beta on your staging site, you should take the following steps prior to testing Beta 4:

  • Deactivate and delete the older beta versions of Sensei LMS.
  • Restore the database backup for your staging site.
  • Download Beta 4 and unzip it to your wp-content/plugins folder. You can choose to either override your existing folder, or rename it to something else before unzipping, if applicable.
  • Activate Sensei LMS 3.0.0 Beta 4.

The above steps are necessary to ensure the course enrolment migration process executes again. If you haven’t tested any of the beta releases prior to this, there’s no need to restore a database backup.

Please note that the release date has been moved to April 27th, 2020, which will allow for time to test Beta 4 prior to release. Feel free to leave a comment on this post if you find any issues while testing our latest beta.

Sensei LMS 3.0 & WooCommerce Paid Courses 2.0 Beta 3

Today we’re releasing Sensei LMS 3.0 Beta 3 and WooCommerce Paid Courses 2.0 Beta 3.

Sensei LMS 3.0

Here are the most notable changes since Beta 2:

  • Actions are now fired when the enrolment status is changed. (See the New Filters section below for more details.)
  • We added the sensei_enrolment_learner_calculation_job_batch_size filter for setting the batch size of the learner calculation job.
  • We introduced a provider journal store that is disabled by default, but can be enabled using the sensei_enable_enrolment_provider_journal filter.
  • We’ve significantly reduced the amount of data that was being stored in the database for course enrolments.

You can see what else changed in Beta 3 here or you can download Sensei LMS 3.0 Beta 3 here.

WooCommerce Paid Courses 2.0

The most notable change in WooCommerce Paid Courses 2.0 Beta 3 is that we added the sensei_wc_paid_courses_migration_inactive_memberships_provide_manual_enrolment filter to enable blocking users with inactive memberships from being manually enrolled when the migration runs.

Testing

As always, please test the beta release on a staging site and not your live site. If you don’t have a staging site, you can use the WP Staging plugin to create one.

If you’ve already tested either Beta 1 or Beta 2 on your staging site, you should take the following steps prior to testing Beta 3:

  • Deactivate and delete the Beta 1/Beta 2 version of Sensei LMS.
  • Restore the database backup for your staging site.
  • Download Beta 3 and unzip it to your wp-content/plugins folder. You can choose to either override your existing folder, or rename it to something else before unzipping, if applicable.
  • Activate Sensei LMS 3.0.0 Beta 3.

The above steps are necessary to ensure the course enrolment migration process executes again. If you haven’t tested any of the beta releases prior to this, there’s no need to restore a database backup.

For Developers

Sensei LMS

New Filters

  • sensei_comment_counts_include_sensei_comments – Whether or not to include Sensei comments in the comments count.
  • sensei_course_enrolment_store_results – Whether or not to store course enrolment results.
  • sensei_enable_enrolment_provider_journal – Whether or not to enable journal storage.
  • sensei_enrolment_course_calculation_job_batch_size – Set the batch size for the number of learners to query when the course calculation job runs.
  • sensei_enrolment_history_size – Set the maximum number of historical entries that are stored for every user, course and provider.
  • sensei_enrolment_learner_calculation_job_batch_size – Set the batch size for the number of learners to query when the learner calculation job runs.
  • sensei_enrolment_message_log_size – Set the maximum number of log messages that are stored for every user, course and provider.
  • sensei_frontend_learner_enrolment_handler – Enable providers to specify a custom course sign-up handler.

New Actions

  • sensei_course_enrolment_status_changed – Fires when the course enrolment status changes.
  • sensei_manual_enrolment_learner_enrolled – Fires when a learner is manually enrolled.
  • sensei_manual_enrolment_learner_withdrawn – Fires when a learner’s manual enrolment is withdrawn.

WooCommerce Paid Courses

New Filter

  • sensei_wc_paid_courses_migration_inactive_memberships_provide_manual_enrolment – Whether or not to block users with inactive memberships from being manually enrolled.

Please note that the release date has been moved to April 22nd, 2020 April 27th, 2020. Feel free to leave a comment on this post if you find any issues while testing Beta 3.

Sensei LMS 3.0 & WooCommerce Paid Courses 2.0 Beta 2

Today we’re releasing a second beta for Sensei LMS 3.0 and WooCommerce Paid Courses 2.0.

Sensei LMS 3.0

Here are the important changes in Sensei LMS 3.0 Beta 2:

  • We’ve added a filter to bypass enrolment functionality altogether.
  • The “Manually Enrolled Learners” filter is now hidden when not needed.
  • We fixed an issue with the comment template not displaying for messages.

You can see what else changed in Beta 2 here or you can download Sensei LMS 3.0 Beta 2 here.

WooCommerce Paid Courses 2.0

Here are a few things we’ve fixed in WooCommerce Paid Courses 2.0 Beta 2:

  • The display of products in the product selector was being cut off in WordPress 5.4.
  • A PHP warning that was logged when running some enrolment jobs.
  • A fatal error when deactivating WooCommerce before WooCommerce Paid Courses.

For Developers

Sensei LMS

  • New Filter: sensei_is_enrolled – Allow default enrolment handling to be bypassed.
  • Deprecated Method: Sensei_Main::activation

As always, please test the beta release on a staging site and not your live site. If you don’t have a staging site, you can use the WP Staging plugin to create one.