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

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

作者 : 资源客 发布时间: 2019-12-8

对于会员制的网站,尽可能避免多人同时登录一个会员账号应该是比较需要的,此前已经分享过 Prevent Concurrent Logins 和 Wp Single Login 两个插件,都可以满足需求,只是这两个插件很久没有更新了,不知道和新版的 WP 兼容如何,今天再推荐一个类似插件 Loggedin,和之前两个不太一样的是,它支持设置最大活跃登录数,也就是一个账号允许多少个客户端同时登录,还可以通过钩子排除掉一些用和用户角色。已测试兼容 wordpress 5.0+ ,Loggedin 使用很简单,直接在后台插件安装界面搜索 Loggedin 即可在线安装,或者到官方下载 https://wordpress.org/plugins/loggedin/,启用插件后,在 设置 – 常规 界面,就可以看到设置选项:

一旦有多个人(客户端)登录同一个账号,超过了设定的活跃登录数,就会出现如下提示:

已经该插件汉化,点击下载简体中文包,解压后将里面的文件上传到 wp-content/languages/plugins 目录即可生效,同时避免插件升级时丢失语言。下面分享下官方提供的排除用户和用户角色的代码示例,按照需求修改好代码,然后添加到主题的 functions.php 文件即可。

排除用户

//排除某些用户,不受最大活跃登录数限制
function f_loggedin_bypass_users( $bypass, $user_id ) {
 
    // 在 array( ) 中输入用户id,多个id用英文逗号隔开
    $allowed_users = array( 1, 2, 3, 4, 5 ); 
    return in_array( $user_id, $allowed_users );
 
}
 
add_filter( 'loggedin_bypass', 'f_loggedin_bypass_users', 10, 2 );

排除角色

//排除某些用户角色,不受最大活跃登录数限制
function f_loggedin_bypass_roles( $prevent, $user_id ) {
 
    // 在 array( ) 中输入用角色名,多个用户角色使用英文逗号隔开
    $allowed_roles = array( 'administrator', 'editor' ); 
    $user = get_user_by( 'id', $user_id );
 
    $roles = ! empty( $user->roles ) ? $user->roles : array();
 
    return ! empty( array_intersect( $roles, $allowed_roles ) );
 
}
 
add_filter( 'loggedin_bypass', 'f_loggedin_bypass_roles', 10, 2 );

 

http://xzh.i3geek.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请不要用于商业用途及非法用途,否则后果自负!
3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"qq301.com",如遇到无法解压的请联系管理员!
资源客是一个优秀的分享资源站,本站资源均为各位友友分享而来,特殊原创会标明如有侵犯版权等可联系删除

资源客 » WordPress 禁止多人同时登录一个账号