覆盖WP登录凭据

时间:2016-07-26 作者:moiz45

无论何时登录到wpadmin,都有两个可用凭据

用户名或电子邮件

电话号码或电子邮件密码是否有可能覆盖WP凭据?

谢谢

2 个回复
SO网友:Mukii kumar

如果您要对wordpress的核心文件进行更改,那么在wordpress的下一次升级中,更改将丢失。

如果您想编辑登录名。php您需要创建一个自定义函数,该函数将覆盖默认函数(用于“UserName”)

您可以点击此链接

How to login with email only no username?

SO网友:Praveen

我们需要做的第一件事是删除默认的身份验证权限。将以下代码段添加到函数中。php文件:

//remove wordpress authentication
remove_filter(\'authenticate\', \'wp_authenticate_username_password\', 20);
将以下代码添加到函数中。php文件:

add_filter(\'authenticate\', function($user, $email, $password){

//Check for empty fields
    if(empty($email) || empty ($password)){        
        //create new error object and add errors to it.
        $error = new WP_Error();

        if(empty($email)){ //No email
            $error->add(\'empty_username\', __(\'<strong>ERROR</strong>: Email field is empty.\'));
        }
        else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ //Invalid Email
            $error->add(\'invalid_username\', __(\'<strong>ERROR</strong>: Email is invalid.\'));
        }

        if(empty($password)){ //No password
            $error->add(\'empty_password\', __(\'<strong>ERROR</strong>: Password field is empty.\'));
        }

        return $error;
    }

    //Check if user exists in WordPress database
    $user = get_user_by(\'email\', $email);

    //bad email
    if(!$user){
        $error = new WP_Error();
        $error->add(\'invalid\', __(\'<strong>ERROR</strong>: Either the email or password you entered is invalid.\'));
        return $error;
    }
    else{ //check password
        if(!wp_check_password($password, $user->user_pass, $user->ID)){ //bad password
            $error = new WP_Error();
            $error->add(\'invalid\', __(\'<strong>ERROR</strong>: Either the email or password you entered is invalid.\'));
            return $error;
        }else{
            return $user; //passed
        }
    }
}, 20, 3);
代码检查用户名(现在是电子邮件)或密码字段是否为空。如果两者都不为空,则使用get_user_by 查找用户的电子邮件。找到有效用户后,它会使用wp_check_password() 作用

有关更多详细信息Click Here