Я был уверен, что wp_update_user
функция должна сделать это ( http://codex.wordpress.org/Function_Reference/wp_update_user ).
Он даже получает user_login в качестве параметра, но, похоже, игнорирует его, когда вы устанавливаете этот параметр.
Так что этот код выглядит нормально, но он не работает так, как вы хотели бы :(:
wp_update_user( array ( 'ID' => $user_id, 'user_login' => $new_login ) ) ;
Вы должны вызвать пользовательский SQL-запрос для обновления user_login:
$wpdb->update($wpdb->users, array('user_login' => $new_user_login), array('ID' => $user_id));
Это работает хорошо, и я не думаю, что это имеет какие-либо серьезные последствия, потому что WP использует идентификатор пользователя для назначения сообщений / комментариев (и так далее) пользователю.
Единственная проблема, о которой я могу думать, это то, что, когда этот пользователь в данный момент вошел в систему, он выйдет из системы после изменения user_login.