# 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.

- Type: PHP
- Runs: Run everywhere
- Category: [Memberships](https://wpide.com/library/category/memberships/)
- Tags: pmpro, login, redirect
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/pmpro-login-redirect-by-level/

## Code

```php
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 use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Paid Memberships Pro: Login Destination per Level" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
