Make WordPress User Name the Email Address

23,712

Solution 1

I know this thread is over a year old now, but I just tested creating an account where the username is an email address and it works. In theory, you could create a front-end signup form that saves the email variable to both the username and email fields in the database.

WordPress allows usernames with some special characters, so this is a completely valid way to sign people up: http://codex.wordpress.org/Function_Reference/sanitize_user

Solution 2

Yes it is possible. Even you can configure WordPress to Login, Register and Retrieve Password using Email only.

You can put the code below in your theme's functions.php file.

Step-1: Remove Username textfield

add_action('login_head', function(){
?>
    <style>
        #registerform > p:first-child{
            display:none;
        }
    </style>

    <script type="text/javascript" src="<?php echo site_url('/wp-includes/js/jquery/jquery.js'); ?>"></script>
    <script type="text/javascript">
        jQuery(document).ready(function($){
            $('#registerform > p:first-child').css('display', 'none');
        });
    </script>
<?php
});

Step-2: Remove Username error

//Remove error for username, only show error for email only.
add_filter('registration_errors', function($wp_error, $sanitized_user_login, $user_email){
    if(isset($wp_error->errors['empty_username'])){
        unset($wp_error->errors['empty_username']);
    }

    if(isset($wp_error->errors['username_exists'])){
        unset($wp_error->errors['username_exists']);
    }
    return $wp_error;
}, 10, 3);

Step-3: Manipulate Background Registration Functionality.

add_action('login_form_register', function(){
    if(isset($_POST['user_login']) && isset($_POST['user_email']) && !empty($_POST['user_email'])){
        $_POST['user_login'] = $_POST['user_email'];
    }
});

There is also a plugin to achieve this functionality.

Plugin: https://wordpress.org/plugins/smart-wp-login/

Solution 3

The username is a core entity in the WordPress DB and philosophy and it can't be bypassed like that. Now if you want to let users login with their emails, use this plugin: http://wordpress.org/extend/plugins/wp-email-login/ It allows you to login with either email/pass or username/pass. Found it like a month ago, works like a charm.

Even plugins that use alternative means for registration and login (facebook, twitter and Google) create a username (for instance, one plugins I've tried creates usernames like fbX where X is the facebook ID. Unfortunately it is not something we can work around.

Hope this helps! :)

Share:
23,712
Shae
Author by

Shae

Updated on March 25, 2021

Comments

  • Shae
    Shae over 3 years

    Is it possible to make WordPress user name the Email Address?

    So unername could be hidden or not required and is replaced with email address.

    I know there are plugins that can allow users to use their email as the log in, but they still have to enter the username when they register. I want to try and do away with the username.

  • trainoasis
    trainoasis about 7 years
    Be aware that usernames are shown in DOM sometimes (some classes for comments etc., depends on a theme), so by using email as a username people can see emails of your users ...