web-dev-qa-db-fra.com

Crochet * après * changement du mot de passe de l'utilisateur?

Je sais que password_reset hooks:

Runs after the user submits a new password during password reset 
but before the new password is actually set. 

mais il y a un crochet similaireAPRÈSle nouveau mot de passe est actuellement défini?

EDIT: Il serait logique d’utiliser profile_update mais j’ai essayé, et profile_update ne semble pas être appelé en cas de changement de mot de passe pour une procédure de "mot de passe perdu", par exemple. Mon vrai problème est la connexion automatique après la réinitialisation du mot de passe, et la seule solution trouvée à ce jour consistait à utiliser le mot de passe password_reset en appelant manuellement un mot de passe wp_set_password avant d'exécuter mon code, afin d'être sûr que le mot de passe est changé et ALORS mon code est exécuté. Ce n'est pas une procédure simple, et je me demande s'il existe une solution moins "astucieuse" ... J'ai beaucoup cherché, en examinant chaque action hook dans wordpress doc, mais je ne peux pas trouver de solution adéquate.

5
Sasha Grievus

Je me demande si vous cherchez celui-ci :

 /**
  * Fires after the user's password is reset.
  *
  * @since 4.4.0
  *
  * @param object $user     The user.
  * @param string $new_pass New user password.
  */
  do_action( 'after_password_reset', $user, $new_pass );

Il a été introduit dans WordPress 4.4 et réside dans la fonction reset_password(). Le hook after_password_reset se déclenche après la wp_set_password().

Mettre à jour

Voici une idée de solution de contournement antérieure à la version 4.4:

/**
 * Support for the 'after_password_reset' hook in WordPress pre 4.4
 */
add_action( 'password_reset', function( $user, $new_pass )
{
    add_filter( 'pre_option_admin_email', 
        function( $pre_option, $option ) use ( $user, $new_pass )
        {
            // Setup our 'after_password_reset' hook
            if( ! did_action(  'after_password_reset' ) )
                do_action( 'after_password_reset', $user, $new_pass );

            return $pre_option;  
        }  10, 2 );    
}, 10, 2 );

où vous devriez maintenant avoir votre propre hook after_password_reset personnalisé.

N'oubliez pas de backup database avant de tester.

9
birgire

Il semble que vous deviez utiliser profile_update hook.

Il y a une question similaire ici et ici .

Donc, ce message pourrait en fait être considéré comme un doublon.

2
Steven