避免用户在wordpress中更改密码

时间:2018-12-08 18:50:40

标签: mysql wordpress authentication triggers passwords

这是我的第一个问题... TIA寻求帮助

在我的博客中,我想创建一个用户“ guest”(西班牙语中的anonimo),但是一旦连接,他就可以更改密码,我想避免这种情况。我决定创建一个触发器,以在发生更改时恢复原始密码

CREATE TRIGGER anonimo_check
AFTER
  INSERT ON wp_users FOR EACH ROW 
BEGIN
update
  wp_users
set
  user_pass = "xxxxx"
WHERE   user_login = "anonimo";
END

但是我遇到语法错误...我已经检查了几个选项,但是...什么都没有

我现在不是mysql专家,我感到迷茫,我将不胜感激

谢谢 PD。错误是错误代码:1064。You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 9 0.062 sec

2 个答案:

答案 0 :(得分:1)

您可以通过几种方法来进行操作,这比允许用户认为自己已请求密码重置更友好。 WordPress具有过滤器allow_password_reset see documentation

只需将以下内容添加到主题functions.php文件中

function disable_password_reset() { return false; }
add_filter ( 'allow_password_reset', 'disable_password_reset' );

如果用户尝试重设密码,他们将收到错误消息

  

该用户不允许重设密码

答案 1 :(得分:0)

通过Wordpress运行它时,可以使用WP挂钩来避免更改密码。试试这个:

function deny_guest_password_change($user_data){
    $user_login = 'anonimo'; // User login which password will be forced
    $forced_password = 'xxxxxx'; // Password which will be set for $user_login user
    if( $user_data['user_login'] == $user_login ){
        $user_data['user_pass'] = wp_hash_password($forced_password);
    }
    return $user_data;
}
add_filter('wp_pre_insert_user_data', 'deny_guest_password_change', 10);

这将强制用户 anonimo 输入 xxxxxx 密码。

根据需要更改$user_login$forced_password