Last active
April 21, 2023 16:35
-
-
Save michaelbeil/ba95ab6e9333fa41ba80436e6a3a6540 to your computer and use it in GitHub Desktop.
Redirect members to their membership level homepage after logging in
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Redirect members to their membership level homepage after logging in. | |
* | |
* You can add this recipe to your site by creating a custom plugin | |
* or using the Code Snippets plugin available for free in the WordPress repository. | |
* Read this companion article for step-by-step directions on either method. | |
* https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/ | |
*/ | |
function my_pmpro_login_redirect_level_homepage( $user_id ) { | |
// Set the default logout redirect to the site's home page. | |
$redirect_to = home_url(); | |
// Does the user have a membership level? | |
if ( ! empty( $user_id ) && function_exists( 'pmpro_getMembershipLevelForUser' ) && function_exists( 'pmpromh_getHomepageForLevel' ) ) { | |
$level = pmpro_getMembershipLevelForUser( $user_id ); | |
// User has a level, does their level have a homepage? | |
if ( ! empty( $level ) && isset( $level->id ) ) { | |
$member_homepage_id = pmpromh_getHomepageForLevel( $level->id ); | |
// Level has a homepage. | |
if ( ! empty( $member_homepage_id ) ) { | |
// Check if the level homepage requires a membership? | |
global $wpdb; | |
$requires_membership = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->pmpro_memberships_pages WHERE page_id = %d", intval( $member_homepage_id ) ) ); | |
// Can we redirect the user to the level homepage? | |
if ( ! is_wp_error( $requires_membership ) && empty( $requires_membership ) ) { | |
// Homepage does not requires membership, set the redirect to the level homepage. | |
$redirect_to = get_permalink( $member_homepage_id ); | |
} | |
} | |
} | |
} | |
wp_safe_redirect( $redirect_to ); | |
exit; | |
} | |
add_filter( 'pmpro_login_redirect_url', 'my_pmpro_login_redirect_level_homepage', 10, 3 ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment