WordPress禁止特定用户修改密码

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我

     之前我写一篇文章:WordPress实现用户自动登录,文中介绍了实现WordPress公共帐号进行自动登录的方法。现在问题又来了,可能会有人用公共帐号登录,进入后台修改密码,导致其他人无法使用这帐号。在WordPress中,如何禁止特定用户修改密码呢?

     方法很简单,去掉这个公共帐号修改密码的权限即可,我们可以在主题目录下的functions.php中添加以下代码:

$disable_ids = array( 2 ); // 2为禁止修改密码的用户id
global $current_user;
get_currentuserinfo();

if ( in_array( $current_user->ID, $disable_ids ) ) {
  // 后台个人资料页,隐藏密码输入框
  add_filter('show_password_fields', create_function('$nopass_profile', 'return false;'));
  
  // 防止通过其他手段提交密码修改
  add_action('personal_options_update', 'no_save_pwd');
}

function no_save_pwd( $user_id ) {
  if(!empty($_POST['pass1'])) $_POST['pass1'] = '';
  if(!empty($_POST['pass2'])) $_POST['pass2'] = '';
}

// 禁止使用密码找回功能
add_filter('allow_password_reset', 'no_reset_pwd', 10, 2);
function no_reset_pwd( $allow, $user_id ) {
  global $disable_ids;
  if ( in_array( $user_id, $disable_ids ) )
    $allow = false;
  else
    $allow = true;
 
  return $allow;
}

     以上代码第1行中的 2 是要禁止其修改密码的用户id,如果要禁止多个用户修改密码,多个id可以用半角逗号隔开,如 array( 2, 10 )。需要说明的,禁止修改密码的用户角色不能是管理员,因为管理员可以进入后台 - 外观 - 编辑,修改functions.php中的代码。

     如何知道用户的id?进入后台 - 用户,点击某个用户名,进入页面的网址如:https://www.ludou.org/wp-admin/user-edit.php?user_id=258,其中的258就是用户id

     如果想要禁止公用帐号修改个人资料,即让公用帐号无法打开个人资料页,可以查看这篇文章:WordPress禁止某用户编辑个人资料

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/wordpress-disable-user-reset-password.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

15 条留言

点此留言
  1. 乐酷逍遥

    刚刷新就看到新文章了,谢谢兜哥 :)

  2. 胡倡萌 胡倡萌

    做演示站的时候,这个很有用

  3. yxiao yxiao

    都是暂时用不到的需求。

    • yxiao yxiao

      @yxiao 现在用上了。感谢。

  4. itbulu itbulu

    一般还是自己用的,不会对用户开放权限。

  5. tiandi tiandi

    评论这里的indextab有问题,我在网址这按tab跳转到TOP了。

  6. magooup

    不错,很有用,在学习

  7. 果酱 果酱

    这倒是个比较新颖的教程,学习了

  8. wmtimes wmtimes

    可能会用的到。不过目前没用。

  9. airoschou airoschou

    未开放用户注册,暂时用不到啦

  10. 高高 高高

    请教一个问题啊,如果我想实现其他个人信息不可修改该怎么做呢?例如“电子邮件”、“名字”、“姓氏”、“昵称”等?

    • Ludou

      @高高 用js把这几个框弄个不可修改状态即可

      • 高高 高高

        @Ludou 有没有别的方法?程序方面的?

  11. rer rer

    如何设置禁止密码登录呀?最近很多人攻击博客后台 想要设置禁止密码登录用cookies登录
    试过重定向wp-login.php和删除这个文件 这样都会导致自己无法登录的问题 所以想禁止密码登录

发表留言