php - Woocommerce 新用户注册后更新用户元数据

标签 php wordpress woocommerce metadata user-data

我尝试在 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/

相关文章:

database - WordPress 网站的字符问题

php - Nginx 不显示 404 页面,而是在根目录中提供索引文件

php - 在 Nginx 上模拟 Apache 目录别名

php - 删除侧边栏商店页面 woocommerce

php - 在 Woocommerce 订单详细信息管理区域中显示自定义数据

php - Wordpress - 如何将特定类别的特色图片显示为背景?

php - MySQL 在列中搜索字符串

php - 如何创建下拉菜单

javascript - Wordpress 循环中的 jQuery 脚本

php - 直接查看 php 文件时出现 Wordpress 404 错误