WordPress中禁止多个人同时登录一个账号

WordPress中禁止多个人同时登录一个账号

资源外星人导读:本站为大家带来WordPress中禁止多个人同时登录一个账号文章,更多建站技术,请继续关注资源外星人!

WordPress建站中,有时我们的网站开放注册,希望会员在里面自由评论发布文章。对于这些开放注册的 WordPress 站点来说,尤其是具有会员购买服务的网站,需要禁止多个人同时登录一个账号。下面介绍一下方法。

切换到主题目录,打开 functions.php 文件,加入以下代码:

/**
 * 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 插件实现同样地效果。

以上就是资源外星人整理的WordPress中禁止多个人同时登录一个账号全部内容,希望对大家有所帮助!