Skip to content

Instantly share code, notes, and snippets.

@tobeyadr
Created February 3, 2020 21:02
Show Gist options
  • Save tobeyadr/23941e09f0ef25d374208a4ea46d099d to your computer and use it in GitHub Desktop.
Save tobeyadr/23941e09f0ef25d374208a4ea46d099d to your computer and use it in GitHub Desktop.
Require the previous lesson in a LifterLMS course to be complete before moving forward. Same as requiring the prerequisite for a lesson to be the previous lesson.
/*
Plugin Name: LifterLMS Mods
Plugin URI: https://academy.groundhogg.io
Description: Modify default LifterLMS behaviour.
Version: 1.0
Author: Groundhogg Inc.
Author URI: http://groundhogg.io
License: A "Slug" license name e.g. GPL2
*/
function lifterlms_require_previous_lesson_be_complete( $results, $post_id ){
if ( 'lesson' !== get_post_type( $post_id ) ){
return $results;
}
if ( $results[ 'is_restricted' ] === true ){
return $results;
}
$user_id = get_current_user_id();
$student = false;
if ( $user_id ) {
$student = new LLMS_Student( $user_id );
}
$lesson = new LLMS_Lesson( $post_id );
$previous_lesson_id = $lesson->get_previous_lesson();
if ( $previous_lesson_id && $student ){
if ( ! $student->is_complete( $previous_lesson_id, 'lesson' ) ){
$results['is_restricted'] = true;
$results['reason'] = sprintf( '%s_prerequisite', 'lesson' );
$results['restriction_id'] = $previous_lesson_id;
}
}
return $results;
}
add_filter( 'llms_page_restricted', 'lifterlms_require_previous_lesson_be_complete', 99, 2 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment