Skip to content

Instantly share code, notes, and snippets.

@KristaButler
Created August 30, 2022 02:56
Show Gist options
  • Save KristaButler/ab6d3fb01f20fa85a0e2cdb6339cc10d to your computer and use it in GitHub Desktop.
Save KristaButler/ab6d3fb01f20fa85a0e2cdb6339cc10d to your computer and use it in GitHub Desktop.
Custom Role Rules
<?php
function mepr_remove_subscriber_role($roles_to_remove, $wp_user) {
$mepr_user = new MeprUser($wp_user->ID);
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