Programmatically Enroll Students

If you want to sell courses in a bundle or use a third party selling system or just want to enroll students manually, this code snippet will help you do that.

Student enrollment is done in two methods- free and paid. Tutor LMS maintains its own orders to determine if a user has purchased a course or not. Please have a look at this gist to get an idea about the available filters and options in the ordering system of Tutor LMS.

do_enrol is the function that starts the enrollment process for Tutor LMS. It needs 3 options- $course_id, $order_id and $student_id to work. If there is no course ID found, the function exits immediately.

Here, the $order_id refers to WooCommerce order ID. If you are migrating from some other plugins and used WooCommerce to sell the courses, then you can use that for tracking purpose. But this field is not mandatory. If you want, you can set a default value of 0 for this field.

There is an action named tutor_before_enroll it is fired right before the enrollment process is started. It passes the course ID and user ID to the order system of Tutor LMS and updates the $enrolment_status to completed, pending or canceled. It also logs the enrollment time for the subscription-based systems.

When a new enrollment process is started, the default value for the course enrollment status is set to pending. When the system gets a confirmation from the eCommerce plugin such as WooCommerce, EDD or PMPRO, it changes the status to completed.

tutor_enroll_data is the filter that creates the orders. It has the following parameters- post_type, post_title, post_status, post_author, post_parent

To insert the enrollment data, you need to use wp_insert_post along with the tutor_after_enroll action.

Was this helpful?