我应该使用哪个钩子通过配置文件更新和密码重置来捕获$_POST(‘password’)

时间:2019-03-28 作者:Kamran Asgari

我需要重新刷新用户在Wordpress注册期间输入的密码(我使用WooCommerce)

我可以通过以下方式成功地做到这一点:

add_action( \'user_register\', \'myplugin_registration_save\', 10, 1 );
function myplugin_registration_save( $user_id ) {

    if ( isset( $_POST[\'password\'] ) ) {
        update_user_meta($user_id, \'user_pass2\', password_hash($_POST[\'password\'], PASSWORD_DEFAULT));
    }

}
但是我还需要再做两次,profile updatereset password

我写道:

function my_profile_update( $user_id ) {
    if ( ! isset( $_POST[\'password\'] ) || \'\' == $_POST[\'password\'] ) {
        return;
    }
    update_user_meta($user_id, \'user_pass2\', password_hash($_POST[\'password\'], PASSWORD_DEFAULT));
    $x = $_POST[\'password\'];
    echo \'<script language="javascript">\';
    echo \'alert(\'.$x.\')\';
    echo \'</script>\';


    // password changed...
}
add_action( \'profile_update\', \'my_profile_update\' );
这根本不起作用。

UPDATE

function my_profile_update( $user_id ) {

    update_user_meta($user_id, \'user_pass2\', (string) $_POST[\'password\']);
    // password changed...
}
add_action( \'profile_update\', \'my_profile_update\' );
它可以工作,但是$_POST[\'password\']$_POST[\'pass1\'] 不返回任何内容。

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

有时,您必须查看您试图通过以下方式获取的输入的名称$_POST. 表单之间并不总是一致的。对于WooCommerce密码更改表单,新密码字段的输入名称为“password\\u 1”,因此您需要通过$_POST:

function my_profile_update( $user_id ) {

    if ( ! is_admin() ) {
       update_user_meta($user_id, \'user_pass2\', (string) $_POST[\'password_1\']);
    }
    // password changed...
}
add_action( \'profile_update\', \'my_profile_update\' );
如果对输入标记名称有疑问,请使用浏览器检查器。将鼠标悬停在相关字段上时,右键单击并选择“inspect”。这将在inspector中突出显示该字段的HTML,您可以查看“name”的值。这是您需要在中使用的值$_POST.

还要注意,添加了检查操作是否未在仪表板(管理)端运行的功能(is_admin()). WooCommerce正在使用与WP相同的操作挂钩来整合(这听起来像是你不想做的事情)。

相关推荐

在_PASSWORD期间截取无效电子邮件

在我正在开发的网站上,我需要所有与登录相关的表单都位于定制的品牌页面上。我几乎涵盖了所有这些,但我只有一个案例无法正确处理。我已经为丢失的密码设置了自定义页面页面,方法是添加下面的过滤器,然后使用自定义模板创建一个新页面,该模板呈现插入电子邮件以获取链接表单。function custom_lost_password_page( $lostpassword_url, $redirect ) { return home_url( \'/lost-password/\' ); }&#x