Filter uncanny-toolkit-pro

learndash-show-lesson-quizzes

Filters whether quizzes are displayed for a lesson, triggered when the lesson content is being rendered.

add_filter( 'learndash-show-lesson-quizzes', $callback, 10, 4 );

Description

Fires to determine if quizzes should be displayed for a lesson. Developers can filter this boolean to conditionally hide quizzes based on lesson status, user progress, or other custom logic. The lesson's post object, course ID, and current user ID are available for context.


Usage

add_filter( 'learndash-show-lesson-quizzes', 'your_function_name', 10, 4 );

Parameters

$show_lesson_quizzes (mixed)
This parameter determines whether quizzes associated with the current lesson should be displayed.
$post (mixed)
This parameter determines whether quizzes associated with a lesson should be displayed.
$course_id (mixed)
This parameter contains the current lesson or topic post object being processed.
$user_id (mixed)
This parameter contains the ID of the current course being viewed.

Return Value

The filtered value.


Examples

/**
 * Filter to determine if quizzes should be displayed for a lesson.
 *
 * This example prevents quizzes from being shown on the last page of a paginated course
 * if the lesson itself has quizzes associated with it.
 *
 * @param bool   $show_lesson_quizzes The default value indicating whether to show quizzes.
 * @param WP_Post $post                The current lesson post object.
 * @param int     $course_id           The ID of the current course.
 * @param int     $user_id             The ID of the current user.
 * @return bool                       True if quizzes should be shown, false otherwise.
 */
function my_learndash_hide_quizzes_on_last_page( $show_lesson_quizzes, $post, $course_id, $user_id ) {
	// If the lesson is part of a paginated course and we are on the last page,
	// and if there are quizzes associated with this lesson, then we hide them.
	if ( $show_lesson_quizzes && ! empty( $course_id ) && ! empty( $user_id ) && ! empty( $post ) ) {
		global $course_pager_results;

		// Check if course pagination is active and if we are on the last page.
		if ( isset( $course_pager_results[ $post->ID ]['pager'] ) && ! empty( $course_pager_results[ $post->ID ]['pager'] ) ) {
			$current_page = $course_pager_results[ $post->ID ]['pager']['paged'];
			$total_pages  = $course_pager_results[ $post->ID ]['pager']['total_pages'];

			if ( $current_page == $total_pages ) {
				// Get the quizzes for this lesson.
				$quizzes = learndash_get_lesson_quiz_list( $post, $user_id, $course_id );
				if ( ! empty( $quizzes ) ) {
					// If there are quizzes for this lesson and we are on the last page,
					// we decide to hide them by returning false.
					return false;
				}
			}
		}
	}

	// Otherwise, return the original value.
	return $show_lesson_quizzes;
}
add_filter( 'learndash-show-lesson-quizzes', 'my_learndash_hide_quizzes_on_last_page', 10, 4 );

Placement

This code should be placed in the functions.php file of your active theme, a custom plugin, or using a code snippets plugin.


Source Code

src/templates/single-ld30-course.php:256
src/templates/single-ld30-lesson.php:162

}

			global $course_pager_results;
			$show_lesson_quizzes = true;
			if ( isset( $course_pager_results[ $post->ID ]['pager'] ) && ! empty( $course_pager_results[ $post->ID ]['pager'] ) ) :
				$show_lesson_quizzes = ( $course_pager_results[ $post->ID ]['pager']['paged'] == $course_pager_results[ $post->ID ]['pager']['total_pages'] ? true : false );
			endif;
			$show_lesson_quizzes = apply_filters( 'learndash-show-lesson-quizzes', $show_lesson_quizzes, $post->ID, $course_id, $user_id );
			$quizzes             = learndash_get_lesson_quiz_list( $post, get_current_user_id(), $course_id );
			if ( ! $grid_quizzes && ! empty( $quizzes ) && $show_lesson_quizzes ) :
				?>
				<!--<div class="learndash-wrapper">-->
				<!--<div class="ld-lesson-topic-list">-->
				<!--<div class="ld-table-list ld-topic-list ld-no-pagination">-->
				<div class="ld-section-heading">


Scroll to Top