我想用wordpress中的用户名,电子邮件ID和电话号码登录 - php

我想用用户名,电子邮件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": [ �…