Paid Memberships Pro: Login Destination per Level
Sends members to a different page after logging in depending on their membership level, for example Premium members to the premium library.
Opens WPIDE on
Code
if ( ! function_exists( 'pmpro_hasMembershipLevel' ) ) {
return;
}
// Level ID => URL, highest level first.
$wpide_pmpro_login_pages = array(
2 => home_url( '/premium/' ),
1 => home_url( '/members/' ),
);
$wpide_pmpro_login_target = function ( $url, $user ) use ( $wpide_pmpro_login_pages ) {
if ( ! $user instanceof WP_User || user_can( $user, 'edit_posts' ) ) {
return $url;
}
foreach ( $wpide_pmpro_login_pages as $level_id => $page ) {
if ( pmpro_hasMembershipLevel( $level_id, $user->ID ) ) {
return $page;
}
}
return $url;
};
add_filter( 'pmpro_login_redirect_url', function ( $url, $request, $user ) use ( $wpide_pmpro_login_target ) {
return $wpide_pmpro_login_target( $url, $user );
}, 10, 3 );
add_filter( 'login_redirect', function ( $url, $request, $user ) use ( $wpide_pmpro_login_target ) {
return $wpide_pmpro_login_target( $url, $user );
}, 20, 3 );
Notes
Levels are checked in the order listed. Members without a listed level keep the normal destination.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.