Last active
April 3, 2021 03:30
-
-
Save ronalfy/6ebd53cd55f0f0c3e8e5b447356cb2a3 to your computer and use it in GitHub Desktop.
Paid Membership Pro Course Visibility With Learndash
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
global $pmpro_learndash_level_courses, $pmpro_learndash_my_courses; | |
function pmpro_learndash_course_visibility() { | |
global $pmpro_learndash_level_courses, $pmpro_learndash_my_courses; | |
if ( is_user_logged_in() && function_exists( 'pmpro_getMembershipLevelForUser' ) && class_exists( 'Learndash_Paidmemberships' ) && function_exists( 'learndash_user_get_enrolled_courses' ) ) { | |
global $current_user; | |
$levels = pmpro_getMembershipLevelForUser( $current_user->ID ); | |
if ( $levels ) { | |
$level_id = $levels->ID; | |
$pmpro_learndash_level_courses = Learndash_Paidmemberships::get_level_courses( $level_id ); | |
$enrolled_courses = learndash_user_get_enrolled_courses( $current_user->ID ); | |
$pmpro_learndash_level_courses = array_merge( $pmpro_learndash_level_courses, $enrolled_courses ); | |
add_filter( 'ld_course_list_shortcode_attr_defaults', 'pmpro_course_list_shortcode' ); | |
} | |
} else { | |
$pmpro_learndash_my_courses = true; | |
add_filter( 'ld_course_list_shortcode_attr_defaults', 'pmpro_course_list_shortcode_my_courses' ); | |
} | |
} | |
/** | |
* Only show user courses if not logged in. | |
* | |
* @see ld_course_list | |
*/ | |
function pmpro_course_list_shortcode_my_courses( $shortcode_atts ) { | |
global $pmpro_learndash_my_courses; | |
$shortcode_atts['mycourses'] = $pmpro_learndash_my_courses; | |
return $shortcode_atts; | |
} | |
/** | |
* Only show courses a logged in user is registered for. | |
* | |
* @see ld_course_list | |
*/ | |
function pmpro_course_list_shortcode( $shortcode_atts ) { | |
global $pmpro_learndash_level_courses; | |
$shortcode_atts['post__in'] = $pmpro_learndash_level_courses; | |
return $shortcode_atts; | |
} | |
add_action( 'init', 'pmpro_learndash_course_visibility' ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This recipe is included in the blog post on "Filter the LearnDash Course List to Only Show a Member’s Enrolled Courses" at Paid Memberships Pro here: https://www.paidmembershipspro.com/filter-the-learndash-course-list-to-only-show-a-members-enrolled-courses/