在研究和查找WordPress Codex和支持论坛后,这是我用来验证存储在自定义表中的用户的代码
add_filter(\'wp_authenticate_user\', \'custom_authentication\',10 ,2);
function custom_authentication($emailAdd, $password) {
global $wpdb, $formErr;
if(1 > count($formErr->get_error_messages())){
$table = $wpdb->prefix.\'finusers\';
$sql = "SELECT * FROM $table WHERE email_address=\'$emailAdd\' AND password=\'$password\'";
$authenticate_user = $wpdb->query($sql);
if($authenticate_user!=0){
echo "Successful authenticate user";
}else{
echo "Failed to authenticate user";
}
}
}
我将把这个作为我的答案发布,这可能对其他人有所帮助。
我在这里发布了一个更新的答案。我花了一些时间,但在阅读和研究了StackExchange论坛、WordPress codex等之后,这是我的更新代码
add_filter(\'wp_authenticate_user\', \'custom_authentication\', 10 , 2);
function custom_authentication($emailAdd, $password) {
include_once(\'././wp-includes/class-phpass.php\');
global $wpdb, $formErr;
if(1 > count($formErr->get_error_messages())){
$hasher = new PasswordHash(8, TRUE);
$table = $wpdb->prefix.\'finusers\';
$results=$wpdb->get_row("SELECT * FROM $table WHERE email_address=\'$emailAdd\'");
$hashed_pwd = $results->password;
//echo $hashed_pwd;
if($hasher->CheckPassword($password, $hashed_pwd)){
echo "Password Match Sccuessfully";
}else{
echo "Failed to authenticate, please chc";
}
}
}
基本上:
添加了过滤器,以便覆盖wp\\u authenticate\\u userhook并定义自己的自定义身份验证函数。
使用$wpdb函数,将数据库中存储的电子邮件地址与用户在表单中输入的电子邮件地址进行匹配。
如果电子邮件地址与数据库中存储的电子邮件地址匹配,则提取并存储变量中的哈希密码,在本例中为$hashed\\u pwd,并将其与变量$password中存储的纯文本密码进行比较。如果密码匹配的用户已成功通过身份验证。
这里需要注意的一点是,可以添加另一个步骤。此步骤验证用户的电子邮件地址;检查电子邮件地址是否存在于custom table 在检查密码之前,请先访问WordPress数据库。