Skip to content

Instantly share code, notes, and snippets.

@ronalfy
Last active April 1, 2020 12:52
Show Gist options
  • Save ronalfy/848828cb7ed8ceac5e936c63380a1a3b to your computer and use it in GitHub Desktop.
Save ronalfy/848828cb7ed8ceac5e936c63380a1a3b to your computer and use it in GitHub Desktop.
Paid Memberships Pro - Log In Redirect
<?php
function pmpro_redirect_account_page_to_login() {
if ( ! is_user_logged_in() ) {
$pmpro_pages = array();
$pmpro_pages[] = pmpro_getOption( 'account_page_id' );
$pmpro_pages[] = pmpro_getOption( 'billing_page_id' );
$pmpro_pages[] = pmpro_getOption( 'cancel_page_id' );
$pmpro_pages[] = pmpro_getOption( 'invoice_page_id' );
if ( ! isset( $_REQUEST['level'] ) ) {
$pmpro_pages[] = pmpro_getOption( 'checkout_page_id' );
}
if ( ( function_exists( 'pmpro_has_membership_access' ) && ! pmpro_has_membership_access() ) || is_page( $pmpro_pages ) ) {
$referer = get_permalink( get_queried_object_id() );
$referer = add_query_arg(
array(
'pmprohomepage' => 0,
),
$referer
);
if ( isset( $_REQUEST['invoice'] ) ) {
$referer = add_query_arg(
array(
'invoice' => sanitize_text_field( $_REQUEST['invoice'] ),
),
$referer
);
}
$redirect_url = add_query_arg(
array(
'redirect_to' => urlencode( esc_url_raw( $referer ) ),
'reauth' => 1,
),
home_url( 'wp-login.php' )
);
wp_safe_redirect( esc_url_raw( $redirect_url ) );
exit;
}
}
}
add_action( 'wp', 'pmpro_redirect_account_page_to_login', 0 );
function pmpromh_redirect_account_page_to_login( $redirect_to, $request, $user ) {
if ( ! strstr( $redirect_to, 'pmprohomepage' ) ) {
return $redirect_to;
} else {
remove_filter( 'login_redirect', 'pmpromh_login_redirect', 10, 3 );
}
return $redirect_to;
}
add_filter( 'login_redirect', 'pmpromh_redirect_account_page_to_login', 9, 3 );
@ronalfy
Copy link
Author

ronalfy commented Apr 1, 2020

Use-case is user sends a link to a PMPro page. Wants a redirect to their login page. After the user logs in, is taken back to that page. Also works with Member Homepages.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment