我试图在 wp_login 挂钩中添加一个函数,该挂钩扫描所有当前用户登录会话,并销毁除最后两个(包含当前会话)之外的所有内容。我希望用户最多登录。同时使用两个设备。
我可以通过以下方式获取会话:
$manager = WP_User_Meta_Session_Tokens::get_instance( $user->ID );
$tokens = $manager->get_all();
或:
$tokens = get_user_meta($user->ID, 'session_tokens', true);
但是你怎么能在for循环中销毁这些会话呢?
foreach($tokens as $token){
$manager->destroy( $token );
}
返回:hash()期望参数2为字符串。 使用键作为值也不起作用。
答案 0 :(得分:0)
我现在使用了不同的方法,更新user_meta直接做了诀窍
function limit_active_user_sessions( $user_login, $user ){
$sessions = get_user_meta( $user->ID, 'session_tokens', true );
$sessions_keys = array_keys($sessions);
$sessions_count = count($sessions);
$max_active_sessions = 2;
if ( $sessions_count > 2 ){
for($i=0;$i<($sessions_count-$max_active_sessions);$i++){
unset( $sessions[$sessions_keys[$i]] );
}
update_user_meta( $user->ID, 'session_tokens', $sessions );
}
add_action( 'wp_login', 'limit_active_user_sessions', 10, 2 );