当前位置:首页>WordPress建站>用户交互>WordPress 禁止多个人同时登录一个账号

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

WordPress 主题 CoreNext

对于开放注册的 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 安装启用也是一样的。

2020年6月更新:该代码和插件不兼容新版本WP了,请使用 Wp Single Login 替代。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
欢迎关注WordPress大学公众号 WPDAXUE
用户交互

WordPress 修改用户角色名称和添加新用户角色

2014-12-18 8:28:33

后台定制用户交互

WordPress 后台只显示当前登录用户的文章、页面和媒体

2015-1-6 8:25:09

3 条回复 A文章作者 M管理员
  1. 用了,不错。

  2. 从安全考虑,这个还是比较有用的

  3. 撒花!

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索