We have now added two filters for this : wplms_finish_course_check and wplms_unfinished_unit_quiz_message
NOTE : This tip is no longer required for WPLMS versions 1.9.4 as it is inbuilt in WP Admin – LMS – Settings section
1. Add following code in WP Admin -> Plugins -> Editor -> WPLMS Customizer -> wplms-customizer.php
or
Add this code in child theme->functions.php
add_action('init','wplms_custom_hooks'); function wplms_custom_hooks(){ add_filter('wplms_finish_course_check','custom_wplms_finish_course_check',10,2); add_filter('wplms_unfinished_unit_quiz_message','custom_wplms_unfinished_unit_quiz_message',10,2); } // ADD custom Code in class function custom_wplms_finish_course_check($flag,$course_curriculum){ if(isset($course_curriculum) && count($course_curriculum)){ $user_id = get_current_user_id(); foreach($course_curriculum as $id){ if(is_numeric($id) && get_post_type($id) == 'quiz'){ $marks=get_post_meta($id,$user_id,true); $passing_score = get_post_meta($id,'quiz_passing_score',true); if(isset($marks) && is_numeric($marks) && isset($passing_score) && is_numeric($passing_score) && $marks < $passing_score){ return $id; } } } } return $flag; } function custom_wplms_unfinished_unit_quiz_message($message,$quiz_id){ if(get_post_type($quiz_id) == 'quiz'){ $user_id = get_current_user_id(); $marks=get_post_meta($quiz_id,$user_id,true); $passing_score = get_post_meta($quiz_id,'quiz_passing_score',true); if(isset($marks) && is_numeric($marks) && isset($passing_score) && is_numeric($passing_score) && $marks < $passing_score){ $message = 'You need to get marks more than '.$passing_score.' in quiz to finish the course, please retake the quiz :'.get_the_title($quiz_id); } } return $message; }
You need to add a Custom field in quiz for each quiz you want to enable this feature, which is used in above code, quiz_passing_score