Filter uncanny-toolkit-pro

uo_ld_course_navigation_show_course_quizzes

Filters whether to display quizzes within the course navigation for a given course.

add_filter( 'uo_ld_course_navigation_show_course_quizzes', $callback, 10, 2 );

Description

Allows developers to control whether quizzes are displayed within the LearnDash course navigation. Modify the return value to conditionally hide or show quizzes for a specific course. The hook receives the current course ID and navigation instance data.


Usage

add_filter( 'uo_ld_course_navigation_show_course_quizzes', 'your_function_name', 10, 2 );

Parameters

$course_id (mixed)
This parameter determines whether course quizzes should be displayed by default.
$instance (mixed)
This parameter contains the ID of the current course being displayed in the navigation.

Return Value

The filtered value.


Examples

<?php
/**
 * Conditionally hide course quizzes from the LearnDash course navigation.
 *
 * This filter allows administrators or theme developers to prevent quizzes
 * from being displayed within the course navigation structure for specific
 * courses or under certain conditions.
 *
 * @param bool   $show_course_quizzes Whether to show course quizzes. Defaults to true.
 * @param int    $course_id           The ID of the current course.
 * @param array  $instance            The instance array containing navigation settings.
 * @return bool                        The modified value for whether to show course quizzes.
 */
add_filter( 'uo_ld_course_navigation_show_course_quizzes', function( $show_course_quizzes, $course_id, $instance ) {
	// Example: Hide course quizzes for a specific course ID.
	if ( 123 === $course_id ) {
		return false; // Do not show course quizzes for course ID 123.
	}

	// Example: Hide course quizzes if a specific user role is not logged in.
	if ( ! is_user_logged_in() && current_user_can( 'subscriber' ) ) {
		// This check is a bit redundant as logged-in users are usually subscribers,
		// but demonstrates checking user capabilities.
		// A more practical example might be checking for 'administrator' role.
		return false;
	}

	// Example: Hide course quizzes if a custom meta key is set on the course.
	$hide_quizzes_meta = get_post_meta( $course_id, '_hide_all_quizzes_in_nav', true );
	if ( ! empty( $hide_quizzes_meta ) && 'yes' === $hide_quizzes_meta ) {
		return false;
	}

	// If none of the above conditions are met, return the original value.
	return $show_course_quizzes;
}, 10, 3 );

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/classes/learndash-course-navigation.php:370

<div class="ultp-lazy-course-navigation__heading">
				<?php echo esc_html( $uo_course_navigation_heading ); ?>
			</div>
			<?php
		}

		// Always show quizzes at every level.
		$instance['show_course_quizzes'] = apply_filters( 'uo_ld_course_navigation_show_course_quizzes', true, $course_id, $instance );
		$instance['show_lesson_quizzes'] = apply_filters( 'uo_ld_course_navigation_show_lesson_quizzes', true, $course_id, $instance );
		$instance['show_topic_quizzes']  = apply_filters( 'uo_ld_course_navigation_show_topic_quizzes', true, $course_id, $instance );
		?>
		<div class="ultp-lazy-course-navigation__content">
			<?php learndash_course_navigation( $course_id, $instance, $lesson_query_args ); ?>
		</div>
		<?php


Scroll to Top