Skip to content

Instantly share code, notes, and snippets.

@DumahX
Last active August 31, 2022 17:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DumahX/5bdca74af246080d874f81a26aa05d87 to your computer and use it in GitHub Desktop.
Save DumahX/5bdca74af246080d874f81a26aa05d87 to your computer and use it in GitHub Desktop.
Remove default Subscriber role and add new role when a member's subscription lapses.
<?php
function mepr_remove_subscriber_role($roles_to_remove, $wp_user) {
$mepr_user = new MeprUser($wp_user->ID);
// Remove the default role in all cases.
$roles_to_remove[] = 'spectator';
if (mepr_is_member_inactive($mepr_user)) {
$roles_to_remove[] = 'subscriber';
} else {
$active_memberships = $mepr_user->active_product_subscriptions('ids', true);
if (!empty($active_memberships)) {
$roles_to_remove[] = 'ex-subscriber';
}
}
return $roles_to_remove;
}
add_filter('mepr-userroles-remove-roles', 'mepr_remove_subscriber_role', 10, 2);
function mepr_add_new_role($roles_to_keep, $wp_user) {
$mepr_user = new MeprUser($wp_user->ID);
if (mepr_is_member_inactive($mepr_user)) {
$roles_to_keep[] = 'ex-subscriber';
}
return $roles_to_keep;
}
add_filter('mepr-userroles-add-roles', 'mepr_add_new_role', 10, 2);
function mepr_is_member_inactive($user) {
$all_memberships = $user->active_product_subscriptions('ids', true, false);
$inactive_memberships = array();
if (!empty($all_memberships)) {
foreach ($all_memberships as $membership) {
if (!($user->is_already_subscribed_to($membership))) {
$inactive_memberships[] = $membership;
}
}
}
if (!empty($inactive_memberships)) {
return true;
} else {
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment