Skip to content

Instantly share code, notes, and snippets.

@pbrocks
Created December 24, 2018 02:19
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pbrocks/944da98fa3d4686f53b85f9b6de0e234 to your computer and use it in GitHub Desktop.
Save pbrocks/944da98fa3d4686f53b85f9b6de0e234 to your computer and use it in GitHub Desktop.
Redirect to login if not logged in or if not PMPro membership page.
<?php
/**
* Redirect to login or homepage if user is logged out or not a member
* Add this code to your active theme's functions.php file.
*/
function my_template_redirect() {
global $current_user;
$okay_pages = array(
pmpro_getOption( 'billing_page_id' ),
pmpro_getOption( 'account_page_id' ),
pmpro_getOption( 'levels_page_id' ),
pmpro_getOption( 'checkout_page_id' ),
pmpro_getOption( 'confirmation_page_id' ),
);
// if the user doesn't have a membership, send them home
if ( ! $current_user->ID
// && ! is_home()
&& ! is_page( $okay_pages )
&& ! strpos( $_SERVER['REQUEST_URI'], 'login' ) ) {
wp_redirect( home_url( 'wp-login.php?redirect_to=' . urlencode( $_SERVER['REQUEST_URI'] ) ) );
} elseif ( is_page()
&& ! is_home()
&& ! is_page( $okay_pages )
&& ! $current_user->membership_level->ID ) {
wp_redirect( home_url() );
}
}
add_action( 'template_redirect', 'my_template_redirect' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment