bp_member_switch_to( int $user_id, bool $remember = false, bool $set_old_user = true )
Switches the current logged in user to the specified user.
Description
Parameters
- $user_id
-
(Required) The ID of the user to switch to.
- $remember
-
(Optional) Whether to 'remember' the user in the form of a persistent browser cookie.
Default value: false
- $set_old_user
-
(Optional) Whether to set the old user cookie.
Default value: true
Return
(false|WP_User) WP_User object on success, false on failure.
Source
File: bp-members/bp-members-functions.php
4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 | function bp_member_switch_to( $user_id , $remember = false, $set_old_user = true ) { $user = get_userdata( $user_id ); if ( ! $user ) { return false; } $old_user_id = ( is_user_logged_in() ) ? get_current_user_id() : false; $old_token = function_exists( 'wp_get_session_token' ) ? wp_get_session_token() : '' ; $auth_cookie = bp_member_switching_get_auth_cookie(); $cookie_parts = wp_parse_auth_cookie( end ( $auth_cookie ) ); if ( $set_old_user && $old_user_id ) { // Switching to another user $new_token = '' ; // We'll not override the old user if ( empty ( $auth_cookie ) ) { bp_member_switching_set_olduser_cookie( $old_user_id , false, $old_token ); } } else { // Switching back, either after being switched off or after being switched to another user $new_token = isset( $cookie_parts [ 'token' ] ) ? $cookie_parts [ 'token' ] : '' ; bp_member_switching_clear_olduser_cookie( false ); } /** * Attaches the original user ID and session token to the new session when a user switches to another user. * * @param array $session Array of extra data. * @param int $user_id User ID. * * @return array Array of extra data. */ $session_filter = function ( array $session , $user_id ) use ( $old_user_id , $old_token ) { $session [ 'switched_from_id' ] = $old_user_id ; $session [ 'switched_from_session' ] = $old_token ; return $session ; }; add_filter( 'attach_session_information' , $session_filter , 99, 2 ); wp_clear_auth_cookie(); wp_set_auth_cookie( $user_id , $remember , '' , $new_token ); wp_set_current_user( $user_id ); if ( $old_token && $old_user_id && ! $set_old_user ) { // When switching back, destroy the session for the old user $manager = WP_Session_Tokens::get_instance( $old_user_id ); $manager ->destroy( $old_token ); } return $user ; } |
Changelog
Version | Description |
---|---|
BuddyBoss 1.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.