编辑配置文件时更改WordPress用户的角色

时间:2017-04-17 作者:Charles Xavier

我想要一个函数,这样,如果当前用户角色=tempUser,并且他们在编辑配置文件部分更改了密码,那么他们的角色将更改为subscriber

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

下面是一种将操作添加到profile_update 钩该钩子传递两个参数:$user_id$old_user_data. 我们可以使用这些来查看用户是否处于tempUser角色。如果是,则将旧用户密码与新用户密码进行比较。如果密码不同,则更新用户角色。

//* Add action to hook which fires after a user updates their profile
add_action( \'profile_update\', \'wpse_263873_profile_update\', 10, 2 );
function wpse_263873_profile_update( $user_id, $old_user_data ) {
  //* Get the user and escape early if they have the tempUser role
  $user = get_user_by( \'id\', $user_id );
  if( ! in_array( \'tempUser\', $user->roles ) ) {
    return;
  }
  //* If the old user_pass isn\'t exactly equal to the new user_pass
  if( $old_user_data->user_pass !== $user->user_pass ) {
     //* Update the role
     wp_update_user( [
       \'ID\'   => $user_id, 
       \'role\' => \'subscriber\', 
     ] );
  }
}

相关推荐