WordPress建站中,有时我们的网站开放注册,希望会员在里面自由评论发布文章。对于这些开放注册的 WordPress 站点来说,尤其是具有会员购买服务的网站,需要禁止多个人同时登录一个账号。下面介绍一下方法。
切换到主题目录,打开 functions.php 文件,加入以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | /** * Detect if the current user has concurrent sessions * * @return bool */ function pcl_user_has_concurrent_sessions() { return ( is_user_logged_in() && count( wp_get_all_sessions() ) > 1 ); } /** * Get the user's current session array * * @return array */ function pcl_get_current_session() { $sessions = WP_Session_Tokens::get_instance( get_current_user_id() ); return $sessions->get( wp_get_session_token() ); } /** * Only allow one session per user * * If the current user's session has been taken over by a newer * session then we will destroy their session automattically and * they will have to login again to continue. * * @action init * * @return void */ function pcl_disallow_account_sharing() { if ( ! pcl_user_has_concurrent_sessions() ) { return; } $newest = max( wp_list_pluck( wp_get_all_sessions(), 'login' ) ); $session = pcl_get_current_session(); if ( $session['login'] === $newest ) { wp_destroy_other_sessions(); } else { wp_destroy_current_session(); } } add_action( 'init', 'pcl_disallow_account_sharing' ); |
当然您也可以下载安装 Prevent Concurrent Logins 插件实现同样地效果。