在*用户密码更改后*挂钩?

时间:2016-02-19 作者:Sasha Grievus

我知道password\\u reset挂钩:

Runs after the user submits a new password during password reset 
but before the new password is actually set. 
但是在新密码实际设置之后,会有一个类似的钩子?

编辑:使用profile\\u update是合乎逻辑的,但我已经尝试过了,例如,在“丢失密码”过程的密码更改情况下,似乎不会调用profile\\u update。我真正的问题是在密码重置后自动登录,到目前为止,唯一的解决方案是使用password\\u reset hook在执行我的代码之前手动调用wp\\u set\\u密码,以确保密码更改,然后执行我的代码。这不是一个干净的过程,我想知道是否有一个解决方案不那么“黑客”。。。我搜索了很多,查看了wordpress文档中的每个动作挂钩,但我找不到合适的解决方案。

2 个回复
最合适的回答,由SO网友:birgire 整理而成

我想知道你是否在寻找this one:

 /**
  * 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 测试前的数据库。

SO网友:Steven

看来你必须使用profile_update

有一个类似的问题here, 和here.

所以这篇文章实际上可能被认为是重复的。

相关推荐

I can't recover my password

你能解释一下下面这行代码是什么意思吗?if ( isset( $_COOKIE[ $rp_cookie ] ) && 0 < strpos( $_COOKIE[ $rp_cookie ], \':\' ) ) { 这是因为我发现这就是我的代码发现故障的地方,并且无法正确设置密码。UPDATE:电子邮件发送到页面后,下面的选择将置为False,然后以$user=False;?结束,这是正常的?if(isset($\\u COOKIE[$rp\\u COOKIE])&&a