Skip to content

Instantly share code, notes, and snippets.

@JarrydLong
Created October 25, 2024 11:11
Show Gist options
  • Save JarrydLong/1bd77a9f6a066c48f942c39e0715abdb to your computer and use it in GitHub Desktop.
Save JarrydLong/1bd77a9f6a066c48f942c39e0715abdb to your computer and use it in GitHub Desktop.
<?php //do not copy
function mypmpro_enroll_on_new_course( $course_id, $post, $update ) {
global $wpdb;
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
// Learndash not active, bail.
if ( ! function_exists( 'llms_is_user_enrolled' ) ) {
return;
}
//Doing autosave - don't enroll
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
//Updating the post - don't enroll
if ( $update ) {
return;
}
//Post revision - don't enroll
if ( wp_is_post_revision( $post_id ) ) {
return;
}
$everyone_enrolled = get_post_meta( $course_id, 'pmpro_ld_enrolled', true );
//Only enroll everyone if the course is being saved for the first time.
if( $everyone_enrolled ) {
return;
}
$sql = "SELECT pmu.user_id, pmu.membership_id FROM {$wpdb->prefix}pmpro_memberships_users pmu
LEFT JOIN {$wpdb->prefix}pmpro_memberships_pages mp ON pmu.membership_id = mp.membership_id
WHERE pmu.status = ‘active’
AND mp.page_id = ". $course_id;
$members_to_enroll = $wpdb->get_results( $sql );
if ( empty( $members_to_enroll ) || ! is_array( $members_to_enroll ) ) {
return;
}
// Loop through all members and make sure they aren't enrolled and enroll them.
foreach( $members_to_enroll as $member ) {
if ( ! llms_is_user_enrolled( $member->course_id, $member->user_id ) ) {
llms_enroll_student( $member->user_id, $member->course_id );
} else {
// echo "This user had access - we're not giving it to them again<br/>";
}
}
update_post_meta( $course_id, 'pmpro_ld_enrolled', true );
}
add_action( 'save_post_sfwd-courses', 'mypmpro_enroll_on_new_course', 10, 3 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment