Last active
June 21, 2022 09:53
-
-
Save ipokkel/6b8b20b0cd75a71bdaea0abd81b1bb90 to your computer and use it in GitHub Desktop.
Redirect users to their membership level homepage after logging out of WordPress.
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 users to their membership level homepage after logging out of WordPress. | |
* | |
* 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_redirect_level_homepage_after_logout( $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_action( 'wp_logout', 'my_pmpro_redirect_level_homepage_after_logout', 20, 1 ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment