WordPress更新用户 meta不工作strtolower

syqv5f0l  于 2023-01-01  发布在  WordPress
关注(0)|答案(1)|浏览(102)

我在wordpress中的wp_update_user有问题。下面的代码可以工作,但不是我想要的。

add_action('user_register', 'register_role', 10 , 1);

function register_role($user_id) {
    $userdata = array();
    $userdata['ID'] = $user_id;
    $userdata['role'] = $_POST['Newrole']; //value for example 'Goldmember'
    wp_update_user($userdata);
}

我有几个问题:

  • “Goldmember”是用户角色的显示名。我在数据库中看到了新的用户元(a:2:{s:6:“Goldmember”; B:1;s:6:“订户”; B:1;})
  • “黄金会员”在wordpress用户管理中不起作用,用户激活了默认角色
  • 如果我使用strtolower($_POST ['Newrole'])将“黄金会员”更改为“黄金会员”,代码将不再工作
  • 如果我将数据库中的“黄金会员”更改为“黄金会员”(a:2:{s:6:“黄金会员”; B:1;s:6:“订户”; B:1;}),它在wordpress用户管理和工作中可见

我需要在代码中修改什么,我没有看到任何错误。
非常感谢

0md85ypi

0md85ypi1#

我已经改变了我的方式来解决这个问题。我用了另一个钩子来改变注册时的用户角色。我用了“uwp_after_process_register”,这个钩子会在注册过程结束时被触发,所以我可以做任何我想做的事情。
这是现在我的解决方案,所以我的每一个问题都解决了,你只需要采取UsersWP:

add_action('uwp_after_process_register', 'register_role', 10 , 2);

function register_role($data, $user_id) {
    $userdata = array();
    $userdata['ID'] = $user_id;
    $userdata['role'] = $data['FormFieldRole'];
    wp_update_user($userdata);  
}

相关问题