禁止一个帐号多人同时登录[WordPress]

对于开放注册的 WordPress 站点来说,尤其是有会员购买服务的站点,可能需要禁止用户共享账号,也就是要禁止多个人同时登录一个账号。笨笨今天分享老外的一个方法,大家不妨试试。

将下面的代码到主题的 functions.php 中即可:

  1. //禁止重复登录  
  2.   
  3. /** 
  4.  * Detect if the current user has concurrent sessions 
  5.  * 
  6.  * @return bool 
  7.  */  
  8. function pcl_user_has_concurrent_sessions() {  
  9.     return ( is_user_logged_in() && count( wp_get_all_sessions() ) > 1 );  
  10. }  
  11.    
  12. /** 
  13.  * Get the user's current session array 
  14.  * 
  15.  * @return array 
  16.  */  
  17. function pcl_get_current_session() {  
  18.     $sessions = WP_Session_Tokens::get_instance( get_current_user_id() );  
  19.    
  20.     return $sessions->get( wp_get_session_token() );  
  21. }  
  22.    
  23. /** 
  24.  * Only allow one session per user 
  25.  * 
  26.  * If the current user's session has been taken over by a newer 
  27.  * session then we will destroy their session automattically and 
  28.  * they will have to login again to continue. 
  29.  * 
  30.  * @action init 
  31.  * 
  32.  * @return void 
  33.  */  
  34. function pcl_disallow_account_sharing() {  
  35.     if ( ! pcl_user_has_concurrent_sessions() ) {  
  36.         return;  
  37.     }  
  38.    
  39.     $newest  = max( wp_list_pluck( wp_get_all_sessions(), 'login' ) );  
  40.     $session = pcl_get_current_session();  
  41.    
  42.     if ( $session['login'] === $newest ) {  
  43.         wp_destroy_other_sessions();  
  44.     } else {  
  45.         wp_destroy_current_session();  
  46.     }  
  47. }  
  48. add_action( 'init', 'pcl_disallow_account_sharing' );  

支付宝:15117895442@163.com

支付宝扫一扫赞助

benben

发表评论

您必须 登录 才能发表留言!