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