How to Auto Login After Registration in WordPress

2020-02-16 08:49发布

问题:

I've been trying for days now to take users who have just registered to my WordPress site and automatically log them in and then redirect them to a URL of my choice. By default, WordPress sends you a username and a password, then you must log in manually. This is a total pain. How can i overcome this. I have my own registration page(core php page) which successfully adds users into DB. But the point is, i should avoid users to login again. Once registration is done, it should automatically redirects to home page or profile page. I am a new bee to wordpress functionalities. It would be grateful if someone(who have knowledge on core functionality of wordpress) atleast suggests a way/solution. Looking forward. Thanks

回答1:

// Add on function.php for Auto login after register and redirect to a home page. varified this code

function auto_login_new_user( $user_id ) {
    wp_set_current_user($user_id);
    wp_set_auth_cookie($user_id);
    $user = get_user_by( 'id', $user_id );
    do_action( 'wp_login', $user->user_login );//`[Codex Ref.][1]
    wp_redirect( home_url() ); // You can change home_url() to the specific URL,such as "wp_redirect( 'http://www.wpcoke.com' )";
    exit;
}
add_action( 'user_register', 'auto_login_new_user' );


回答2:

Following is based on how WooCommerce creates a new user and logs him in:

$user_pass = esc_attr( $_POST['account_password'] );

$new_user_data = array(
    'user_login' => $_POST['account_username'],
    'user_pass'  => $user_pass,
    'user_email' => $_POST['account_email'],
    'role'       => 'subscriber'
);

$user_id = wp_insert_user( $new_user_data );

// Set the global user object
$current_user = get_user_by( 'id', $user_id );

// set the WP login cookie
$secure_cookie = is_ssl() ? true : false;
wp_set_auth_cookie( $user_id, true, $secure_cookie );

to redirect use wp_safe_redirect, e.g.

wp_safe_redirect( home_url( '/' ) );
exit;


回答3:

Thanks for your support guys..i did on my own with the following code..thanks for your time and support :)

<i>$getdetails= mysql_fetch_array(mysql_query("SELECT * FROM `wp_users` WHERE `ID`='$user_id'"));
$username=$getdetails['user_login'];


$creds = array();
$creds['user_login'] = $username;
$creds['user_password'] = $password;
$creds['remember'] = true;

    $user = wp_signon( $creds, false );
    if ( is_wp_error($user) ){
        echo $user->get_error_message();
    }else{
        wp_redirect( home_url() );
    }


标签: wordpress