Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WordPress Registration with only email

Tags:

php

wordpress

I looking for a plugin or custom coding solution that a user only needs to type in his mail adress for register. no username, no password.

I found this plugin, but the last update is two years ago.. https://wordpress.org/plugins/smart-wp-login/

like image 344
user6573193 Avatar asked Jan 30 '23 01:01

user6573193


1 Answers

YES, you can achieve this.

Rule 1: WordPress requires a username. We must provide a username.

Rule 2: Don't edit WordPress core code.

We can achieve this by hiding username field, get email and store it as username.

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'];
}
});

Put above code in your theme's functions.php file.

like image 91
Atlas_Gondal Avatar answered Feb 03 '23 06:02

Atlas_Gondal