我想用用户名,电子邮件ID和电话号码登录wordpress。
用户注册时我在用户元数据中插入电话号码的位置。
有什么钩子可以访问用户元数据并使用密码进行验证以进行登录。
https://wordpress.org/plugins/wp-email-login/
我知道该插件在登录时用于用户名和电子邮件ID验证。因此,我可以使用用户名和电子邮件ID登录,但是我的主要问题是用户元表中的phone nmber。
参考方案
试试这个:
我们需要做的第一件事是删除默认的身份验证权限。将以下代码段添加到您的functions.php文件中:
//remove wordpress authentication
remove_filter('authenticate', 'wp_authenticate_username_password', 20);
接下来,我们将添加自己的身份验证。为此,我们将使用add_filter。
将以下代码添加到您的functions.php文件中:
add_filter('authenticate', function($user, $email, $password){
//We shall SQL escape all inputs
$user_phone = $wpdb->escape($_REQUEST['user_phone']);
$password = $wpdb->escape($_REQUEST['password']);
//Check for empty fields
if(empty($user_phone) || empty ($password)){
//create new error object and add errors to it.
$error = new WP_Error();
if(empty($user_phone)){ //No email
$error->add('empty_phone', __('<strong>ERROR</strong>: Phone field is empty.'));
}
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);
//Instead of the above one use this
$user = reset(
get_users(
array(
'meta_key' => 'user_phone',
'meta_value' => $user_phone,
'number' => 1,
'count_total' => false
)
)
);
//bad email
if(!$user){
$error = new WP_Error();
$error->add('invalid', __('<strong>ERROR</strong>: Either the phone 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 phone or password you entered is invalid.'));
return $error;
}else{
return $user; //passed
}
}
}, 20, 3);
这次的表格应为:
当然,如果您想为所有输入字段输入一个字段,则可以完成此操作。但是您需要决定如何选择要执行的验证电话号码,电子邮件地址或用户名
<form id="login" name="form" action="<?php echo home_url(); ?>/login/" method="post">
<input id="user_phone" type="text" placeholder="Phone Number" name="user_phone">
<input id="password" type="password" placeholder="Password" name="password">
<input id="submit" type="submit" name="submit" value="Submit">
</form>
php-casperjs获取内部文本 - php我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…
PHP:从函数返回值并直接回显它? - php这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…
将输入类型复选框关联到输入类型文本 - php我有一个问题,我需要将输入类型复选框与输入类型文本关联。情况如下:从数据库中提取数据。 PK数据是复选框的值。当复选框选择输入类型的文本时,您可以在其中输入特定数字。现在的问题是,选中所有类型的复选框输入文本都会被激活。我希望通过选择复选框输入,仅启用与复选框相关联的输入。我的HTML代码(此代码创建一个输入复选框,并为数据库中的每个记录输入文本,而我要激活…
php:是否有充分的理由引用所有数组键/索引? - php我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…
PHP:如何从JSON数组获取属性? - php我有以下JSON数组:使用PHP,如何从上面的JSON数组中获取geometery->location->lat&lng值?例如(伪代码):<?php $json = { "status": "OK", "results": [ { "types": [ …