我尝试在 Woocommerce 注册后向 WP_USERMETA
表添加自定义字段
add_filter('woocommerce_new_customer_data', 'wc_assign_custom_role', 10, 1);
function wc_assign_custom_role($args) {
update_user_meta($user_id, 'user_pass2', password_hash($_POST['password'], PASSWORD_DEFAULT));
return $args;
}
如您所见,我尝试在散列之前捕获密码并将其以不同的散列格式保存在该表中
但它没有向表中添加任何内容
我在 WordPress 注册 Hook user_register
中测试了同一行,它有效,但仅适用于 WordPress 注册,不适用于 woocommerce
更新
add_filter('woocommerce_new_customer_data', 'wc_assign_custom_role', 10, 1);
function wc_assign_custom_role($args) {
global $current_user;
update_user_meta($current_user->$user_id, 'user_pass2', password_hash($_POST['password'], PASSWORD_DEFAULT));
return $args;
}
还是不行
更新二
function action_woocommerce_created_customer( $customer_id, $new_customer_data, $password_generated ) {
update_user_meta($customer_id, 'user_pass2', password_hash($_POST['password'], PASSWORD_DEFAULT));
};
add_action( 'woocommerce_created_customer', 'action_woocommerce_created_customer', 10, 3 );
这个创建元数据,但它似乎使用不同的 $_POST['password']
而不是我输入的密码,因此散列其他内容而不是密码
有什么想法吗?
最佳答案
找到了解决方案,我们应该使用$_POST['account_password']
而不是$_POST['password']
function action_woocommerce_created_customer( $customer_id, $new_customer_data, $password_generated ) {
update_user_meta($customer_id, 'user_pass2', password_hash($_POST['account_password'], PASSWORD_DEFAULT));
};
add_action( 'woocommerce_created_customer', 'action_woocommerce_created_customer', 10, 3 );
关于php - Woocommerce 新用户注册后更新用户元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55324931/