Php 我想从wp_用户表中获取用户id。我写了以下代码,但它不起作用

Php 我想从wp_用户表中获取用户id。我写了以下代码,但它不起作用,php,sql,wordpress,Php,Sql,Wordpress,我想要的代码,创建用户,如果它不存在于数据库中,它是工作正常,但如果用户是真实的,那么我想让访问wordpress网站。控制是在其他块,但我无法从电子邮件中获取用户ID的以下代码写在其他块。我应该怎么做才能做到这一点 if($bearer_token){ global $wpdb; $name = $_POST['log']; $email = $_POST['log']; //$table_name = $wpdb->prefix . "wpuser"

我想要的代码,创建用户,如果它不存在于数据库中,它是工作正常,但如果用户是真实的,那么我想让访问wordpress网站。控制是在其他块,但我无法从电子邮件中获取用户ID的以下代码写在其他块。我应该怎么做才能做到这一点

if($bearer_token){

    global $wpdb;
    $name = $_POST['log'];
    $email = $_POST['log'];

    //$table_name = $wpdb->prefix . "wpuser";

    include_once(ABSPATH . '/var/www/html/wp-config.php');
    $connection = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);
    $link = mysqli_select_db($connection, DB_NAME);
    if($link){
    //  echo "Success";
        ////////////////

        $db_name = $wpdb->prefix . "users";
       // echo $table_name;
        $wpdb->insert( $db_name, array(
            'name' => $name,
            'email' => $email
        ) );

        ///////////////
    }else{
        echo "Fail";
    }

}else{
    echo "Error";
}

//////////////////////////

if($bearer_token){
add_action( 'init', function () {

  $username = $_POST['log'];
  $password = $_POST['pwd'];
  $email_address = $_POST['log'];
  //$url = "0.0.0.0:8000"
//    echo "if inside";



  if ( ! username_exists( $username ) ) 

    {    
    $user_id = wp_create_user( $username, $password, $email_address );
    echo $user_id;
    $user = new WP_User( $user_id );
    $user->set_role( 'contributor' );

    }elseif (username_exists($username)==True) {
        // $user = get_user_by( 'user_email', $email_address );
        // $user = wp_get_current_user();
    $userdata = WP_User::get_data_by( 'user_login', $username );

    if ( !$userdata )
        return false;

    $user = new WP_User;
    $user->init( $userdata );

    return $user;

        # code...
    }else{
        echo "Errorrr";
    }
    }
   );
}else{
    echo "Unauthenticate user";
}

我不确定您是否已经决定如何区分用户的首次登录和同一用户的所有后续登录。但是,如果您想在每次遇到新电子邮件时创建一个新用户,最简单的方法是将您的登录凭据传递到
wp\u authenticate($username,$password)
,您可以覆盖此项以执行自定义检查,如下所示:

add_action( 'wp_authenticate' , 'check_custom_authentication', 10, 2 );

function check_custom_authentication ( $username, $password ) {
        if ( ! username_exists( $username ) ) {
            return;
        }
        // use wp_set_password function here to set password by getting user id from the login detail we have.
}

变量$email\u地址设置在哪里?为什么不使用刚才验证存在的$username?例如:get_user_by('user_login',$username);还要注意可能的大小写敏感性:当控件转到else块时,我希望用户访问wordpress站点。我必须在else blockt中向tha添加什么代码?通常会重定向到登录屏幕,以便用户可以输入密码,但我怀疑您这里还有其他问题。(例如,在参与者级别自动创建用户听起来很危险-您可能会遇到大量垃圾。此代码在哪里执行?用户名从何处输入?或者,这些旧帖子可能有助于我从一个api验证用户,我从该api获取凭据,当用户通过身份验证时,我希望将这些凭据存储在wordpress用户表中。我成功地在wordpress中创建了用户并将其存储在wp_用户表中,但当用户再次使用相同的用户名但不同的密码登录时,我想用我从api获得的密码更新wordpress db中的密码,我想让他访问wordpress站点。我正在更新我的co请看一看,并提出修改建议。