Registro do usuário seguido por login automático

13

Estou usando um plug-in modificado para minhas finalidades.

O que eu estou procurando é depois que o usuário se registrou para registrá-los automaticamente e retorná-los à página atual. No momento, ele envia um e-mail com seu nome de usuário e senha. Eles então precisam fazer login usando esses detalhes.

    
por Robin I Knight 09.02.2011 / 19:24

4 respostas

9

Basicamente, para registrar um usuário, você pode 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 );

mas isso é somente quando você tem a senha e o login assim você pode criar seu próprio formulário de registro e processá-lo e criar o usuário você mesmo

//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 );

e aqui temos login e senha para que você possa fazer login no usuário.

Espero que isso ajude

    
por Bainternet 09.02.2011 / 20:39
4

Não há um lugar ideal para se conectar ao processo de registro. Eu acho que há um caso strong para adicionar um gancho de ação de evento de registro de usuário ao núcleo. Mas eu acho que você pode ser capaz de fingir, nesse meio tempo. Uma das últimas coisas que acontecem quando um usuário registra com sucesso, é a criação de uma opção de usuário chamada 'default_password_nag'. Podemos criar uma ação para observar isso e definir o usuário quando estiver definido.

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 );
}

Não testado, mas deve funcionar, em teoria.

Agora que temos uma ideia do que fazer, vou opinar que acho que é uma má ideia, em termos de segurança. As pessoas podem criar contas inúteis sem ter que se dar ao trabalho de configurar uma caixa de depósito de lixo eletrônico. :)

    
por Dougal Campbell 24.02.2011 / 23:06
0

Acabei de conseguir que essa funcionalidade funcione usando o gancho user_register e o seguinte código no meu < 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' );
    
por 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);
}
    
por ashraf mohammed 26.05.2013 / 23:52