Function Reference: geodir_buddypress_login_redirect

Summary

Filter the login redirect URL.

Global Values

$bp
(object) (required) BuddyPress object.

Default: None

Package

GeoDirectory_BuddyPress_Integration

Parameters

$redirect_to
(string) (required) The redirect destination URL.

Default: None
$requested_redirect_to
(string) (required) The requested redirect destination URL passed as a parameter.

Default: None
$user
(WP_User|WP_Error) (required) WP_User object if login was successful, WP_Error object otherwise.

Default: None

Return Values

(string)
  • The redirect URL.

Change Log

Since: 1.0.2

Source File

geodir_buddypress_login_redirect() is located in geodir_buddypress/includes/gdbuddypress_functions.php [Line: 1544]

Source Code

function geodir_buddypress_login_redirect( $redirect_to, $requested_redirect_to, $user ) {					
	// Only modify the redirect if we're on the main BP blog
	if ( !bp_is_root_blog() ) {
		return $redirect_to;
	}

	// Only modify the redirect once the user is logged in
	if ( !is_a( $user, 'WP_User' ) ) {
		return $redirect_to;
	}

	// If a 'redirect_to' parameter has been passed that contains 'wp-admin'
	if ( !empty( $redirect_to ) && false !== strpos( $redirect_to, 'wp-admin' ) && user_can( $user, 'edit_posts' ) ) {
		return $redirect_to;
	}
	
	$login_redirect = (int)get_option( 'gdbuddypress_login_redirect' );
	
	switch ( $login_redirect ) {
		case 1: // Home page
			$redirect_to = trailingslashit( home_url() );
		break;
		case 2: // Profile page
			$members_slug = bp_get_members_root_slug();
			
			if ( $members_slug ) {
				$redirect_to = trailingslashit( bp_core_get_user_domain( $user->ID ) );
			} else {
				$username = bp_core_get_username( $user->ID, $user->data->user_nicename, $user->data->user_login );
				
				if ( bp_core_enable_root_profiles() ) {
					$redirect_to = trailingslashit( bp_get_root_domain() . '/' . $username );
				} else {
					$bp_pages = bp_core_get_directory_pages();
					
					if ( isset( $bp_pages->members->slug ) ) {
						$members_slug = $bp_pages->members->slug;
					} else {
						global $bp;
						
						$members_slug = defined( 'BP_MEMBERS_SLUG' ) ? BP_MEMBERS_SLUG : $bp->members->id;
					}
					
					$redirect_to = trailingslashit( bp_get_root_domain() . '/' . $members_slug . '/' . $username );
				}
			}
		break;
		case 3: // Menu page
			$menu_redirect = (int)get_option( 'gdbuddypress_menu_redirect' );
			
			if ( $menu_redirect > 0 ) {
				$redirect_to = get_permalink( $menu_redirect );
			}
		break;
	}
	
	return $redirect_to;
}