wp_destroy_other_sessions()
Удаляет все активные сессии, кроме текущей из БД, у текущего пользователя.
Это может пригодится для управления безопасностью, когда например мы хотим запретить вход одному пользователю одновременно с нескольких устройств.
-
Используйте wp_destroy_all_sessions(), когда нужно удалить все сессии текущего пользователя.
- Используйте wp_destroy_current_session(), когда нужно удалить текущую сессию пользователя.
Работает на основе: WP_Session_Tokens::destroy_others()
Хуков нет.
Возвращает
null
. Ничего (null).
Использование
wp_destroy_other_sessions();
Примеры
#1 Форсированная поддержка только одной сессии
В этом примере для текущего пользователя проверяются все его активные сессии. Если найдена сессия с токеном, отличным от текущего, все остальные сессии завершаются.
if ( is_user_logged_in() ) { $current_token = wp_get_session_token(); $all_sessions = wp_get_all_sessions( get_current_user_id() ); foreach ( $all_sessions as $token => $session_data ) { // Если найдена другая сессия, завершаем её if ( $token !== $current_token ) { wp_destroy_other_sessions(); break; } } }
Список изменений
С версии 4.0.0 | Введена. |
Код wp_destroy_other_sessions() wp destroy other sessions WP 6.8.1
function wp_destroy_other_sessions() { $token = wp_get_session_token(); if ( $token ) { $manager = WP_Session_Tokens::get_instance( get_current_user_id() ); $manager->destroy_others( $token ); } }