Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save alinademi/5bc4679d1b0253584cdda4e6aaf49d42 to your computer and use it in GitHub Desktop.
Save alinademi/5bc4679d1b0253584cdda4e6aaf49d42 to your computer and use it in GitHub Desktop.
Activar membresías grupales para miembros del grupo en LearnDash
<?php
add_filter('sfwd_lms_has_access', function ($return, $post_id, $user_id) {
$return = false;
if (empty($user_id)) {
if (!is_user_logged_in()) {
return false;
} else {
$user_id = get_current_user_id();
}
}
$course_id = learndash_get_course_id($post_id);
if (empty($course_id)) {
return false;
} else {
//IDs de las membresías grupales y el ID de la membresía del usuario actual
$group_membership_plans = get_learndash_membership_plans(); // Se puede agregar un Array con los IDs de las membresías directamente
$membership_level = pmpro_getMembershipLevelsForUser($user_id)[0]->ID;
//Comprueba si el usuario tiene una membresía activa, no grupal
if ($membership_level && !in_array($membership_level, $group_membership_plans)) {
$return = true;
}
//Comprueba si el usuario pertenece a algún grupo y devuelve las IDs de los grupos.
$user_groups_ids = learndash_get_users_group_ids($user_id);
if (!empty($user_groups_ids)) {
foreach ($user_groups_ids as $group_id) {
$leader_ids = learndash_get_groups_administrator_ids($group_id);
if (!empty($leader_ids)) {
foreach ($leader_ids as $leader_id) {
//Comprueba que el líder de grupo tenga una membresía, y que dicha membresía sea grupal
if ($group_leader_membership = pmpro_getMembershipLevelsForUser($leader_id)) {
if (in_array($group_leader_membership[0]->ID, $group_membership_plans)) {
$return = true;
}
} else {
// El líder de grupo no tiene una membresía grupal activa
}
}
}
}
}
}
if (get_user_meta($user_id, 'course_' . $course_id . '_access_from')) {
$return = true;
}
return $return;
}, 10, 3);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment