Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save greathmaster/2d1ec6a65154c9e74c62b9c0f5078a67 to your computer and use it in GitHub Desktop.
Save greathmaster/2d1ec6a65154c9e74c62b9c0f5078a67 to your computer and use it in GitHub Desktop.
PMPro Lock Membership Levels - Allow members to check out for their own membership level for renewal purposes
/*
PMPro Lock Membership Levels - Allow members to check out for their own membership level for renewal purposes
*/
function my_init()
{
remove_action('template_redirect', 'pmprolml_template_redirect');
add_action('template_redirect', 'my_pmprolml_template_redirect');
}
add_action('init', 'my_init');
function my_pmprolml_template_redirect() {
global $pmpro_pages, $current_user, $pmpro_level;
if(empty($pmpro_pages))
return;
$user_lock_options = pmprolml_getUserOptions($current_user->ID);
//Redirect away from the membership locked page if user isn't locked.
if( is_user_logged_in() && is_page($pmpro_pages['membership_locked']) && (empty($user_lock_options) || empty($user_lock_options['locked']))) {
if(pmpro_hasMembershipLevel()) {
wp_redirect(pmpro_url('account'));
exit;
} else {
wp_redirect(home_url());
exit;
}
}
//Redirect to the membership locked page if user is locked.
$locked_pages = array(
$pmpro_pages['levels'],
$pmpro_pages['cancel'],
);
if(is_user_logged_in() && is_page($locked_pages)) {
if(!empty($user_lock_options) && !empty($user_lock_options['locked'])) {
if(!empty($pmpro_pages['membership_locked'])) {
wp_redirect(pmpro_url('membership_locked'));
exit;
} else {
wp_redirect(home_url());
exit;
}
}
}
if(is_user_logged_in() && is_page($pmpro_pages["checkout"]))
{
$level_id = $_REQUEST['level'];
if (! empty ($level_id) && !pmpro_hasMembershipLevel($level_id))
{
wp_redirect (pmpro_url ('membership_locked'));
exit;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment