Browse: Home / Snippets /

Autocomplete course lesson and topics

Contents


Snippet #

Important: All snippets are provided as-is without support or guarantees. These snippets are provided as guidelines for advanced users looking to customize LearnDash. For any additional help or support with these snippets, we recommend reaching out to a LearnDash Expert.

Note: This snippet is no longer required after LearnDash 4.11.0
/**
 * LearnDash Auto Complete Course Lessons and Topics
 */
add_action( 'template_redirect', function() {

	// Comma sperated course_ids to exclude from logic;
	$excluded_courses = array();

	$user_id = get_current_user_id();
	if ( ! $user_id ) {
		return false;
	}

	/**
	 * Never trust the global $post object. Too many plugins 
	 * override this with no WP_Post content.
	 */
	$current_step_id = get_the_ID();
	if ( empty( $current_step_id ) ) {
		return false;
	}

	// Get the current course step POST and make sure it is one from LD.
	$current_step_post = get_post( $current_step_id );
	if ( ( ! $current_step_post ) || ( ! is_a( $current_step_post, 'WP_Post' ) ) || ( ! in_array( $current_step_post->post_type, learndash_get_post_types( 'course_steps' ) ) ) ) {
		return false;
	}

	// Check that the current user has access.
	if ( ! sfwd_lms_has_access( $current_step_id, $user_id ) ) {
		return false;
	}

	// Get the course step
	$course_id = learndash_get_course_id(); 
	if ( ! $course_id ) {
		return false;
	}

	// Check that we are not excluding this course.
	if ( in_array( $course_id, $excluded_courses ) ) {
		return false;
	}

	/**
	 * Get the Mark Complete form/button.
	 * If this does NOT return empty then the mark complete
	 * button would be shown on the page to the user. We use
	 * that to know if we can automatically mark the step
	 * complete here.
	 */
	$mark_html = learndash_mark_complete( $current_step_post );
	if ( ! empty( $mark_html ) ) {
		return learndash_process_mark_complete( $user_id, $current_step_id );
	}

	return false;
});