这将使用户在登录之前退出所有其他会话。本质上确保一个用户一次只允许一个会话。
add_filter(\'authenticate\', \'wpse_12282015_single_login_authenticate\', 0, 3);
function wpse_12282015_single_login_authenticate($user, $username, $password) {
$user = get_user_by(\'login\', $username);
if( isset($user->ID) ){
if(isset($user->roles) && is_array($user->roles)) {
//check for admins
if(in_array(\'administrator\', $user->roles)) {
// admin can log in more than once
return $user;
}
}
// get all sessions for user
$sessions = WP_Session_Tokens::get_instance($user->ID);
// destroy everything since we\'ll be logging in shortly
$sessions->destroy_all();
}
return $user;
}