Sensei LMS 3.0 & WooCommerce Paid Courses 2.0 Betas Are Now Available

Sensei LMS 3.0

Sensei LMS 3.0 is now available for testing. This is a major release that introduces the concept of course enrollments. Previously, a learner had access to a course if they had progress in that course (i.e. they were listed in Learner Management). As of Sensei LMS 3.0, a learner has access to a course if they are enrolled in that course.

Separating course progress from course enrollment means that removing a learner from a course will still retain their progress. This means that the learner will be able to pick up where they left off should they enroll in the course again later:

A learner is automatically (manually) enrolled when they click the Take this Course button on the course page. Administrators and teachers can also enroll learners by clicking the Manually enroll learner button in Learner Management. Similarly, learners can be unenrolled by clicking the Remove manual enrollment button. Only courses that a learner is enrolled in will be displayed on their My Courses page.

Here are some of the other enhancements and fixes you’ll find in 3.0:

  • Module content is only displayed if the learner is enrolled in the course.
  • Improved support for the Twenty Twenty theme.
  • Added support for bulk editing lessons.
  • Teachers are now able to reset progress and edit the course start date of a learner.
  • Fixed video playback for question media attachments.
  • Fixed the ability to add multiple learners to a course.

See what else is in this release.

Testing Sensei LMS

You can download the Sensei LMS 3.0 beta here. One of the most important things to test in this release is that course access for learners is preserved; that is, ensuring that the same learners who had access to the course prior to updating to Sensei LMS 3.0 still have access to the course after updating to Sensei LMS 3.0.

If you find a bug, please submit an issue on Github or leave a comment here. Our tentative release date is April 15th.

WooCommerce Paid Courses 2.0

WooCommerce Paid Courses 2.0 has been updated to support enrollments. The rules for determining when a learner is enrolled have been simplified and are as follows:

  • When selling a course using a simple or variable product, a learner will be enrolled if the status of their order is Processing or Completed. If the order status is changed to something else, or the order is moved to the trash, they will be unenrolled.
  • WooCommerce Subscriptions: When selling a course using a simple or variable subscription, a learner will be enrolled if the status of their subscription is Active or Pending Cancellation. If the subscription status is changed to something else, or the subscription is moved to the trash, they will be unenrolled. The status of the order associated with the subscription is not used to determine enrollment.
  • WooCommerce Memberships: When using a membership to grant access to a course, a learner will be enrolled if the status of their membership is Active, Free Trial (only applicable when using subscriptions), Complimentary or Pending Cancellation (only applicable when using subscriptions). If the membership status is changed to something else, or the membership is moved to the trash, they will be unenrolled. Neither the status of the order nor the status of the subscription (if applicable) associated with the membership are used to determine enrollment.

Here are some of the other enhancements and fixes you’ll find in 2.0:

  • A confirmation modal will be displayed when the products attached to a course are updated. Altering any existing products may update the enrolment status of learners based on whether or not they have purchased that product. Once this modal is confirmed, it will not be displayed again for at least 1 week.
  • Added support for searching and selecting from a large number of products when attaching a product to a course.
  • The woocommerce CSS class is now only added to the single course page.

Testing WooCommerce Paid Courses

Beta testers will receive the WooCommerce Paid Courses beta directly to their inbox. If you would like to sign up to be a beta tester and have a valid license for WooCommerce Paid Courses that has not expired, please fill out the beta tester signup form using the same email address you used to purchase your license.

Just as with Sensei LMS, the most important thing to test in this release is that course access for learners is preserved. This is applicable for all types of courses including free, paid, and courses sold as part of a subscription or membership.

If you find a bug, please leave a comment here. Our tentative release date is April 15th.

For Developers

If you’re a developer, here are the technical details of what’s changed in Sensei LMS 3.0 and WooCommerce Paid Courses 2.0.

Sensei LMS 3.0

Template File Changes

  • archive-course.php – Added container around controls and header.
  • course-results.php – Replaced Sensei_Utils::user_started_course with Sensei_Course::is_user_enrolled.
  • single-course/modules.php – Replaced Sensei_Utils::user_started_course with Sensei_Course::is_user_enrolled.

New Filters

  • sensei_background_job_actions – Get a list of background job actions that are handled by the class.
  • sensei_can_access_course_content – Whether or not the user can view course content.
  • sensei_can_user_manually_enrol – Checks if the currently logged in user can manually enroll in a given course.
  • sensei_can_user_view_module – Whether or not the user can view module content.
  • sensei_course_archive_page_url – Filter the course archive page URL.
  • sensei_course_enrolment_providers – Get all registered course enrolment providers.
  • sensei_handle_frontend_student_enrolment – Allow providers to handle their own course sign-up.
  • sensei_is_legacy_enrolled – Whether or not a user was enrolled in a course prior to Sensei LMS 3.0.0.
  • sensei_legacy_enrolment_check – Whether or not to use the legacy enrolment check. Legacy check uses course progress to determine enrolment.
  • sensei_module_course_signup_notice_level – Customize the alert level for the course sign-up notice message on the module page.
  • sensei_module_course_signup_notice_message – Customize the course sign-up notice message on the module page.
  • sensei_module_show_course_signup_notice – Whether or not to show the course sign-up notice on the module page.
  • sensei_scheduler_class – Override the default class that implements Sensei_Scheduler_Interface.
  • sensei_should_defer_enrolment_check – Whether to defer the enrolment check to the end of the request.
  • sensei_user_all_access – Whether or not a particular user has access to all of Sensei LMS without restriction.

New Actions

  • sensei_before_learners_enrolled_courses_query – Fires before querying the courses a learner is enrolled in.
  • sensei_enrolment_results_calculated – Notify upon calculation of enrolment results.

Deprecated Functions & Methods

  • quiz_questions – Use Sensei_Templates::get_template
  • sensei_check_prerequisite_course – Use Sensei_Course::is_prerequisite_complete
  • Sensei_Admin::delete_user_activity – Use Sensei_Learner::delete_all_user_activity
  • Sensei_Course::course_query
  • Sensei_Course::filter_my_courses
  • Sensei_Course::get_archive_query_args
  • Sensei_Frontend::sensei_course_image – Use Sensei()->course->course_image
  • Sensei_Frontend::sensei_get_template_part – Use Sensei_Templates::get_part
  • Sensei_Frontend::sensei_lesson_image – Use Sensei()->lesson->lesson_image
  • Sensei_Frontend::sensei_lesson_quiz_meta – Use Sensei_Lesson::footer_quiz_call_to_action
  • Sensei_Learner::get_all
  • Sensei_Learner::get_all_active_learner_ids_for_course
  • Sensei_Learner_Management::get_learner_full_name – UseSensei_Learner::get_full_name instead.
  • Sensei_Learner_Management::load_data_object – Use new Sensei_Learners_$name
  • Sensei_Learners_Admin_Bulk_Actions_Controller::get_query_args
  • Sensei_Learners_Admin_Bulk_Actions_Controller::learners_admin_menu
  • Sensei_Learners_Main::data_table_footer
  • Sensei_Lesson::user_not_taking_course_message
  • Sensei_Main::run_updates
  • Sensei_Utils::delete_all_user_activity – Use Sensei_Learner::delete_all_user_activity
  • Sensei_Utils::sensei_get_user_question_answer_notes – Use Sensei()->quiz->get_user_question_feedback
  • Sensei_Utils::sensei_grade_question_auto – Use Sensei_Grading::grade_question_auto
  • Sensei_Utils::sensei_grade_quiz_auto – Use Sensei_Grading::grade_quiz_auto
  • Sensei_Utils::sensei_save_quiz_answers – Use Sensei_Quiz::save_user_answers
  • Sensei_Utils::user_started_course – To check if a learner is enrolled, use Sensei_Course::is_user_enrolled. To check if a learner has course progress, useSensei_Utils::has_started_course.

Deprecated Filters

  • sensei_all_access – Use sensei_user_all_access
  • sensei_couse_access_permission_message
  • sensei_display_start_course_form – Use sensei_can_user_manually_enrol
  • sensei_is_course_content_restricted
  • sensei_learners_learners_columns – Use sensei_learners_default_columns
  • sensei_learners_learners_columns_sortable – Usesensei_learners_default_columns_sortable
  • sensei_user_can_register_for_course

WooCommerce Paid Courses 2.0

New Filters

  • sensei_wc_paid_courses_course_block_editor_l10n_data – Filter localization data for the block editor script.
  • sensei_wc_paid_courses_memberships_auto_enrol_courses – Whether or not to automatically enrol users in courses that are part of this membership.
  • sensei_wc_paid_courses_memberships_is_signed_up – Check if a user should be initially signed up for a course.
  • sensei_wc_paid_courses_subscriptions_get_active_subscription_statuses – Get the active subscription statuses.
  • sensei_wc_paid_courses_subscriptions_get_subscription_types – Get the subscription types for products.

New Actions

  • sensei_wc_paid_courses_course_product_added – Fires after adding a product to a course.
  • sensei_wc_paid_courses_course_product_removed – Fires after removing a product from a course.
  • sensei_wc_paid_courses_course_product_toggled – Fires after making any change to the products attached to a course.

Deprecated Classes

  • Sensei_WC_Paid_Courses\Frontend\Quizzes
  • Sensei_WC_Subscriptions

Deprecated Functions & Methods

  • Sensei_WC::activate_subscription
  • Sensei_WC::alter_can_user_view_lesson
  • Sensei_WC::cancel_order
  • Sensei_WC::complete_order
  • Sensei_WC::course_update
  • Sensei_WC::get_learner_course_active_order_id
  • Sensei_WC::is_my_courses_page
  • Sensei_WC::is_wc_subscriptions_active
  • Sensei_WC_Memberships::add_wc_memberships_notice
  • Sensei_WC_Memberships::display_start_course_form_to_members_only
  • Sensei_WC_Memberships::is_course_access_restricted
  • Sensei_WC_Memberships::is_my_courses_page
  • Sensei_WC_Memberships::on_wc_memberships_user_membership_saved
  • Sensei_WC_Memberships::start_courses_associated_with_membership
  • Sensei_WC_Paid_Courses\Courses::activate_purchased_courses
  • Sensei_WC_Paid_Courses\Courses::activate_purchased_courses_my_courses_page
  • Sensei_WC_Paid_Courses\Courses::activate_purchased_single_course
  • Sensei_WC_Paid_Courses\Courses::remove_active_course
  • Sensei_WC_Paid_Courses\Frontend\Courses::should_filter_subscription_course
  • Sensei_WC_Paid_Courses\Frontend\Lessons::course_signup_notice_message
  • Sensei_WC_Paid_Courses\Frontend\Lessons::do_show_course_signup_notice
  • Sensei_WC_Paid_Courses\Frontend\Quizzes::course_signup_notice_message
  • Sensei_WC_Paid_Courses\Frontend\Quizzes::init
  • Sensei_WC_Subscriptions::activate_subscription
  • Sensei_WC_Subscriptions::get_subscription_permission
  • Sensei_WC_Subscriptions::get_subscription_types – Use Sensei_WC_Paid_Courses\Course_Enrolment_Providers\WooCommerce_Subscriptions::get_subscription_types
  • Sensei_WC_Subscriptions::get_subscription_user_started_course
  • Sensei_WC_Subscriptions::has_user_bought_subscription_but_cancelled
  • Sensei_WC_Subscriptions::is_user_eligible_for_access
  • Sensei_WC_Subscriptions::is_wc_subscriptions_active – Use Sensei_WC_Paid_Courses\Course_Enrolment_Providers\WooCommerce_Subscriptions::is_active
  • Sensei_WC_Subscriptions::load_wc_subscriptions_integration_hooks
  • Sensei_WC_Subscriptions::user_has_non_subscription_product_for_course
  • Sensei_WC_Subscriptions::was_user_added_without_subscription

Deprecated Filters

  • sensei_wc_paid_courses_memberships_auto_start_course
  • sensei_wc_paid_courses_memberships_auto_start_courses – Use sensei_wc_paid_courses_memberships_auto_enrol_courses

As these are beta releases, please test them 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.

Thank you to all our testers and contributors!

Sensei LMS 2.4.0 Release

Sensei LMS 2.4.0 and Sensei with WooCommerce Paid Courses 2.4.0.1.2.4 have just been released. This release includes the following changes:

  • Replaces the Twitter button with a Create a Course button after installing Sensei LMS pages
  • Prevents the default settings from being overridden after clicking the Install Sensei LMS Pages button
  • Fixes a PHP warning when submitting a quiz with an unanswered multiple choice question
  • Adds a transparent background to TinyMCE editor buttons for multi line questions

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

Please note: While we have thoroughly tested these releases, 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 2.3.0 Release

Sensei LMS 2.3.0 and Sensei with WooCommerce Paid Courses 2.3.0.1.2.4 have just been released. This release fixes some issues when duplicating courses with lessons, and optimizes JavaScript file loading in WP Admin.

To learn more about what’s included in these updates, please see the beta release post.

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

Please note: While we have thoroughly tested these releases, 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 2.3 Beta

Sensei LMS 2.3 is now available for beta testing.

What’s Included in this Release?

Here are the highlights of the Sensei LMS 2.3 release:

  • We optimized the loading of JavaScript files in WP admin.
  • We fixed an issue with auto-grading not working correctly for a manually graded quiz.
  • Lesson prerequisites are now updated to the newly created lessons when a course with lessons is duplicated.
  • The original lesson order is preserved when duplicating a course with lessons.
  • We’ve added a REST endpoint for messages.

See what else is in this release.

Hooks

New Filter

  • rest_sensei_message_query– Filter the message query arguments.

Release Testing

You can download the Sensei LMS 2.3 beta here. If you find a bug, please submit an issue on Github or leave a comment here. Our tentative release date for Sensei LMS 2.3 is January 14th.

As this is a beta release, please test it 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.

Thank you to all our testers and contributors!

Closing Gaps in the WC Memberships Integration

We’ve just released Sensei with WooCommerce Paid Courses 2.2.1.1.2.0, which focuses on closing some gaps in the WooCommerce Memberships integration.

(As a reminder, Sensei with WooCommerce Paid Courses is a bundle of Sensei LMS and WooCommerce Paid Courses.)

Skip to “What’s new in Sensei LMS”.

What’s New in WooCommerce Paid Courses

We have to admit that Sensei LMS’s integration with WooCommerce Memberships has not gotten the attention it deserves. The integration is somewhat shallow, and there are gaps in functionality that need to be addressed.

We’re going to change that, starting today.

We’ve begun by focusing on achieving feature parity between course memberships and products attached directly to a course. In particular, courses that are part of a membership are now included in:

  • The purchase confirmation notice that a user sees after purchasing a course.
  • The order confirmation email that is sent to a user after purchasing a course.
  • The Course Component widget.
  • The Paid and Free filters on the course archive page.

You can learn more about the other membership improvements we’ve made in this release by reading the beta release post or visiting the change log.

The next release of WooCommerce Paid Courses will focus on deepening the integration with WooCommerce Memberships, enabling you to take better advantage of existing memberships functionality.

Would you like to be a beta tester for WooCommerce Paid Courses and get the new release ahead of everyone else? If you’re interested, and you have a valid license, please fill out the beta tester signup form using the same email address you used to purchase your license.

What’s New in Sensei LMS

Here are the highlights of the Sensei LMS 2.2.1 release:

  • You can now add HTML to question titles.
  • Loading the Courses page is faster.
  • We’ve fixed an issue that could cause formatting issues on some themes. If your existing theme didn’t look quite right on Sensei LMS pages, we’d encourage you to give it another try with Sensei LMS 2.2.1.

You can learn what else is included in this release by reading the beta release post or visiting the change log.

Update Now

Head over to DashboardUpdates to update your versions of Sensei LMS and Sensei with WooCommerce Paid Courses from within WordPress now!

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 2.2.1 & WooCommerce Paid Courses 1.2.0 Beta Releases

Sensei LMS

The next release of Sensei LMS 2.2.1 is now ready for testing! This release includes some performance enhancements and bug fixes:

See what else is in this release.

Deprecated Methods

  • Sensei_Course::flush_rewrite_rules has been deprecated with no replacement
  • Sensei_Lesson::flush_rewrite_rules has been deprecated with no replacement

Testing Sensei LMS

You can download the Sensei LMS 2.2.1 beta here. If you find a bug, please submit an issue on Github or leave a comment here. Our tentative release date for Sensei LMS 2.2.1 is October 23rd.

WooCommerce Paid Courses

The next release of WooCommerce Paid Courses focuses on closing some gaps in the integration with WooCommerce Memberships.

Here are some of the improvements you’ll find in 1.2.0:

  • Courses purchased via a membership will now be included in the confirmation notice that a user sees after purchase:
  • Additionally, the order confirmation email will list any courses that were purchased as part of a membership.
  • When the status of an order containing a membership is manually changed to Processing or Completed, the purchaser is automatically enrolled in any courses tied to that membership. Similarly, cancelling or refunding an order containing a membership removes the purchaser from any courses tied to that membership.
  • To protect against undesirable behaviour that can occur when a course is sold standalone AND as part of a membership that uses the same product, a warning will now appear on the Edit Course and Edit Membership Plan pages so that corrective action can be taken:
  • The Course Component widget, as well as the Paid and Free filters that may appear on the course archive page, have been updated to include course memberships.

New Filters

  • sensei_wc_paid_courses_get_product_courses – Filter the array of courses attached to the given products.
  • sensei_wc_paid_courses_memberships_block_editor_l10n_data – Filter the localization data for the block editor script.

Testing WooCommerce Paid Courses

Beta testers will receive the WooCommerce Paid Courses beta directly to their inbox. If you would like to sign up to be a beta tester and have a valid license, please fill out the beta tester signup form using the same email address you used to purchase your license.

If you find a bug, please leave a comment here. Our tentative release date for WooCommerce Paid Courses 1.2.0 is October 23rd.

As these are beta releases, please test them 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.

Thank you to all our testers and contributors!

Sell Online Courses Any Way You Choose

We’ve just released new versions of Sensei LMS and Sensei with WooCommerce Paid Courses.

(As a reminder, Sensei with WooCommerce Paid Courses is a bundle of Sensei LMS and WooCommerce Paid Courses.)

Sensei with WooCommerce Paid Courses

We heard from the community that being able to attach only a single WooCommerce product to a course limits the ways in which you are able to sell your courses.

That’s why we’ve added the ability to attach multiple WooCommerce products to a course.

Here’s how it works.

Sensei LMS Sidebar

For sites running WordPress 5.0+ and WooCommerce 3.6+, a Sensei LMS icon appears in the top right of the screen when adding or editing a course. Clicking the icon opens the sidebar. From here, you can select one or more products to attach to the course:

Sensei LMS sidebar

Products Metabox

Sites running older versions of WordPress or WooCommerce, or that have the Classic Editor plugin activated, will be able to select multiple products from the Products metabox:

Products metabox

Course Archive

On the course archive page, the products and their pricing details are displayed:

Course archive page on the OceanWP theme

Single Course

On the single course page, product cards are displayed to highlight the available purchase options:

Screen shot of product cards on the single course page
Purchase options on the single course page using the OceanWP theme

If a course is only attached to one product, then a single purchase button is displayed.

You can find out more about this release by reading the beta release post or by visiting the change log.

Sensei LMS

To learn about what’s in the Sensei LMS 2.2 release, please see the beta release post.

Head over to DashboardUpdates to update from within WordPress now!

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 2.2 Beta

Sensei LMS 2.2 is now available for beta testing!

What’s Included in this Release?

Here are the highlights of the Sensei LMS 2.2 release:

  • We cleaned up unused, abandoned modules when the teacher is changed for a course that contains modules.
  • The course author name on the course archive page now appears beside the title. We’ve also cleaned up the styling for other course meta such as the number of lessons in the course and the course categories.
  • The Order Lessons page now displays lessons that are published, draft, private, or that are scheduled to be published at a future date.
  • We fixed an alignment issue on the single course page when a lesson has a featured image.
  • We removed the ability to add a course from the lesson page due to low usage.
  • We fixed an issue with WooCommerce notices not being displayed on some themes (like Divi).

See what else is in this release.

Hooks

New Filters

  • sensei_modules_title – Modify the Modules title that appears on the single course page.
  • sensei_course_show_lessons – Set the visibility of lessons on the single course page.
  • sensei_course_meta_default_save – Whether or not to run the default save functionality for the course meta.

New Action

  • sensei_course_meta_before_save – Runs before saving the meta value.

Removed/Deprecated Hooks

  • sensei_lesson_course_create_form_top (removed)
  • sensei_lesson_course_create_form_bottom (removed)
  • sensei_lesson_course_created (deprecated)

Deprecated Methods

  • Sensei_Lesson::lesson_add_course has been deprecated with no replacement

Release Testing

You can download the Sensei LMS 2.2 beta here. If you find a bug, please submit an issue on Github or leave a comment here. Our tentative release date for Sensei LMS 2.2 is September 3rd.

In the next few days we will also be releasing the WooCommerce Paid Courses 1.1 beta, which adds support for attaching multiple products to a course. If you would like to sign up to be a beta tester for it and have a valid license, please fill out the beta tester signup form. Beta testers will receive the WooCommerce Paid Courses beta directly to their inbox.

As this is a beta release, please test it 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.

Thank you to all our testers and contributors!

Small Patch Releases for Sensei LMS & Sensei with WooCommerce Paid Courses

We’ve just deployed a new patch release of Sensei LMS and Sensei with WooCommerce Paid Courses to fix an issue with not all modules displaying in the WordPress dashboard. We also fixed a separate issue with multiple correct answers not showing in the question editor of a lesson.

As always, you can see what else is in this release.

Head over to DashboardUpdates to update from within WordPress.

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 2.1.1 & WooCommerce Paid Courses 1.0.2

We’ve just released new versions of Sensei LMS and Sensei with WooCommerce Paid Courses that address a few issues found in the last release.

The official minimum supported WordPress version has also been bumped to 4.9, although technically speaking both plugins should continue to function on older versions for now.

What’s in this Release?

  • We fixed an error that occurred when adding a shortcode using the shortcode block.
  • We fixed an error that occurred on sites running a version of WordPress older than 5.0.
  • The minimum supported WordPress version is now 4.9.

See what else is in this release.

Head over to DashboardUpdates to update from within WordPress.

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.