Skip to content

Instantly share code, notes, and snippets.

@ipokkel
Last active June 21, 2022 09:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ipokkel/6b8b20b0cd75a71bdaea0abd81b1bb90 to your computer and use it in GitHub Desktop.
Save ipokkel/6b8b20b0cd75a71bdaea0abd81b1bb90 to your computer and use it in GitHub Desktop.
Redirect users to their membership level homepage after logging out of WordPress.
<?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