web-dev-qa-db-ja.com

*ユーザーパスワードの変更後にフックしますか?

私はpassword_resetがフックすることを知っています:

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

しかし、同様のフックがあります _ _の後 /新しいパスワードが実際に設定されている?

編集:それはprofile_updateを使用することは論理的だろうが、私は試してみました、そして、profile_updateは、例えば「パスワードを失った」手順のためのパスワード変更の場合には呼ばれないようです。私の本当の問題はパスワードリセット後の自動ログインであり、これまでに発見された唯一の解決策は私のコードを実行する前に手動でwp_set_passwordを呼び出すpassword_resetフックを使用することでした。これはきれいな手順ではありません、そして 'ハック'の少ない解決策があるかどうか私は思っています...私はwordpress docのすべてのアクションフックを見ながらたくさん探しましたが、私は適切な解決策を見つけることができません。

5
Sasha Grievus

あなたが探しているのだろうか これ

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

これはWordPress 4.4で導入され、reset_password()関数内にあります。 after_password_resetフックはwp_set_password()の後に起動します。

更新

これはテスト前の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 );

ここであなたはあなた自身のカスタムafter_password_resetフックを持つべきです。

テストの前に backup databaseを忘れないでください。

9
birgire

profile_updateフックを使わなければならないようです。

ここここ のような質問があります。

したがって、この記事は実際には重複していると見なされる可能性があります。

2
Steven