WordPress doesn't let you change usernames. If you'd like to add the ability to change usernames, here's a way to do it.
First, install the free Easy Username Updater plugin. This useful little plugin gives you a form for changing a user's username, like so:

It also gives you a "User List" page which contains a searchable list of all the users defined in the site, and beside each is a link to the Update Username form show above.
For sites with a relatively short list of users, this might be all you need. However, I found that on sites with a large number of users accounts (e.g. popular e-commerce sites), the user list page can become very slow to load (as it tries to load a table of all user accounts before making them filterable using a JavaScript library). This made finding a user and getting to the relevant "Update Username" form take significantly longer than I'd like.
Fortunately, there is already a fast loading built-in Users table in WordPress, at:
WP Dashboard > Users > All Users
So I added the following PHP code to include a link to the "Update Username" form in the built-in user table:
// Add action link to user rows in admin
add_filter( 'user_row_actions', 'dbc_eup_add_username_edit_link', 10, 2 );
function dbc_eup_add_username_edit_link( $actions, $user ) {
// Add the new action link
if (isset($user->id)) {
$actions['edit_username'] = '<a href="'.esc_attr(admin_url('admin.php?page=eup_username_update&update='.$user->ID)).'">Edit Username</a>';
}
return $actions;
}
Related Post: Adding PHP to the Divi Theme
Now, hovering over a username in the users table reveals an "Edit Username" link which goes to the "Update Username" form for that user:

Another place I wanted a link to the Update Username form was on the edit page for an individual user. Normally you'd see this:

But if you add the following PHP code to your site:
// Add link to user edit form
add_action( 'edit_user_profile', 'dbc_eup_add_edit_username_link' );
function dbc_eup_add_edit_username_link($user) {
if (isset($user->ID)) {
$user_id = $user->ID;
$edit_url = admin_url('admin.php?page=eup_username_update&update='.$user_id);
?>
<script>
jQuery(document).ready(function($) {
$('#user_login + .description').html('<a href="<?php esc_attr_e($edit_url); ?>">Edit</a></td>');
});
</script>
<?php
}
}
The once the page loads the "Usernames cannot be changed" text will be converted into an "Edit" link which links to the Update Username screen, e.g.:

It's not quite as smooth as if the Username field was actually editable directly, but it at least streamlines the workflow of updating usernames somewhat.
0 Comments