Registro de usuario seguido de inicio de sesión automático

13

Estoy usando un complemento modificado para mis propósitos.

Lo que busco es después de que el usuario se haya registrado para iniciar sesión automáticamente y volver a la página actual. En este momento les envía un correo electrónico con su nombre de usuario y contraseña. Luego tienen que iniciar sesión usando esos detalles.

    
pregunta Robin I Knight 09.02.2011 - 19:24

4 respuestas

9

Básicamente, para registrar un usuario puede usar:

            //Login the user
    $creds = array();
    $creds['user_login'] = $login;
    $creds['user_password'] = $password;
    if ( !empty( $remember ) ){ 
        $creds['remember'] = true;
    }
    $user = wp_signon( $creds, true );

pero eso es solo cuando tienes la contraseña y el inicio de sesión para que pueda crear su propio formulario de registro, procesarlo y crear el usuario usted mismo

//Only after Everything has been validated, proceed with creating the user
        //Create the user
        $user_pass = wp_generate_password();
        $user = array(
            'user_login' => $username,
            'user_pass' => $user_pass,
            'first_name' => $firstname,
            'last_name' => $lastname,
            'user_email' => $email
        );
        $user_id = wp_insert_user( $user );

        /*Send e-mail to admin and new user - 
        You could create your own e-mail instead of using this function*/
        wp_new_user_notification( $user_id, $user_pass );

y aquí tenemos el inicio de sesión y la contraseña para que pueda iniciar sesión en el usuario.

Espero que esto ayude

    
respondido por el Bainternet 09.02.2011 - 20:39
4

No hay un lugar ideal para conectarse al proceso de registro. Creo que hay un caso sólido para agregar un gancho de acción de evento de registro de usuario al núcleo. Pero creo que podrías ser capaz de fingir, mientras tanto. Una de las últimas cosas que sucede cuando un usuario se registra con éxito, es la creación de una opción de usuario llamada 'default_password_nag'. Podemos crear una acción para vigilar eso y configurar al usuario cuando esté configurado.

add_action('update_user_metadata', 'my_auto_login', 10, 4);

function my_auto_login( $metaid, $userid, $key, $value ) {
    // We only care about the password nag event. Ignore anything else.
    if ( 'default_password_nag' !== $key  && true !== $value) {
        return;
    }

    // Set the current user variables, and give him a cookie. 
    wp_set_current_user( $userid );
    wp_set_auth_cookie( $userid );
}

No probado, pero debería funcionar, en teoría.

Ahora que tenemos una idea de qué hacer, veré que creo que es una mala idea, desde el punto de vista de la seguridad. Las personas pueden crear cuentas no deseadas sin tener que pasar por la molestia de configurar un buzón de correo no deseado. :)

    
respondido por el Dougal Campbell 24.02.2011 - 23:06
0

Acabo de lograr que esa funcionalidad funcione utilizando el user_register hook y el siguiente código en mi < em> functions.php :

// auto log in a user who has just signed up       
function auto_login_new_user( $user_id ) {
  wp_set_auth_cookie( $user_id, false, is_ssl() );
}
add_action( 'user_register', 'auto_login_new_user' );
    
respondido por el jsims281 02.09.2011 - 12:15
0
function login_after_register($userlogin,$userpass){
    $credentials = array( 'user_login' =>  $userlogin, 'user_password' => $userpass, 'remember' => true );

    $secure_cookie = is_ssl();

    $secure_cookie = apply_filters('secure_signon_cookie', $secure_cookie, $credentials);
    add_filter('authenticate', 'wp_authenticate_cookie', 30, 3);

    $user = wp_authenticate($credentials['user_login'], $credentials['user_password']);
    wp_set_auth_cookie($user->ID, $credentials["remember"], $secure_cookie);
    do_action('wp_login', $user->user_login, $user);
}
    
respondido por el ashraf mohammed 26.05.2013 - 23:52

Lea otras preguntas en las etiquetas