我需要重新刷新用户在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 update 和
reset 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\']
不返回任何内容。
最合适的回答,由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相同的操作挂钩来整合(这听起来像是你不想做的事情)。