Mudança de senha quando o usuário faz login pela primeira vez

4

Eu tenho uma página "alterar senha".

Existe uma maneira de redirecionar a página quando o usuário login first time usando wordpress gerou a senha?

Obrigado

    
por Giri 25.03.2012 / 01:26

3 respostas

3

Talvez isso ajude você?

enlace

Ele parece ter tido um problema parecido e resolvido há um ano.

O que ele faz diferente da sua abordagem é redirecionar 48 horas após o registro. Talvez isso seja suficiente?

Se não, estou procurando fazer do seu jeito.

--- EDITAR

Ok, acabei de criar um plugin que faz exatamente o que você quer:

/*
 Plugin Name: Redirect Passwort
Plugin URI: TODO
Description: TODO
Author: xaeDes
Version: 0.1
Author URI: TODO
License: GPL2
*/

function redirect_passwort_profile_update($user_id, $old_user_data) {
    $user = new WP_User( $user_id );
    if( $user->data->user_pass != $old_user_data->user_pass) {
        //password has changed
        update_metadata("user",$user_id,"changed_password",true);
    }
}
add_action("profile_update", "redirect_passwort_profile_update", 10, 2);

function redirect_passwort_login_redirect($redirect_to, $url_redirect_to = '', $user = null) {

    if( isset($user->ID) ) {
        $changed_password = get_metadata("user", $user->ID, "changed_password",true);
        if( $changed_password != true ) {
            return get_bloginfo('url') . "/change-your-password-dude/";
        } else {
            return $redirect_to;
        }
    }
}
add_filter('login_redirect', 'redirect_passwort_login_redirect',10,3);

function redirect_passwort_password_reset( $user ) {
    //password has been reset to a random one. so the changed_password meta data should be reset as well
    if( isset($user->ID) ) {
        delete_metadata("user", $user->ID, "changed_password");
    }
}
add_action('password_reset', 'redirect_passwort_password_reset');

Adiciona um metadado de usuário "changed_password" ao usuário que alterou sua senha.

Ao fazer o login, ele verifica se o metadado do usuário "changed_password" está definido e redireciona se não estiver definido (e, portanto, o usuário não alterou sua senha uma vez).

Quando a senha do usuário é redefinida para uma senha aleatória, os metadados do usuário "changed_password" também são redefinidos.

    
por xaedes 25.03.2012 / 18:00
2

Anexe user_register e adicione metadados do usuário para armazenar um sinalizador" ainda não efetuou login ". Anexe wp_login e verifique os metadados, exclua e redirecione, se existir, caso contrário, faça o comportamento normal de login.

    
por Milo 25.03.2012 / 18:15
0

Além da resposta de Milo:

    function after_user_register( $user_id ){

        // the new user just registered but never logged in yet
        add_user_meta($user_id, "has_not_logged_in_yet", "true", true);
    }

    add_action( 'user_register', 'after_user_register', 10, 1 );

    function after_user_loggedin(){

        if(is_user_logged_in()){

            $user_id=get_current_user_id();

            $user_meta=get_user_meta($user_id);

            if(isset($user_meta['has_not_logged_in_yet'])){

                delete_user_meta($user_id, "has_not_logged_in_yet");

                //do something else
            }
        }
    }

    add_action( 'init', 'after_user_loggedin');

Editar (FYI)

O gancho wp_login não está funcionando muito bem em termos de meta recuperação de usuário. Às vezes, retorna FALSE com o usuário logado.

    
por RafaSashi 05.09.2016 / 15:34