WordPress仅使用电子邮件注册

use*_*193 2 php wordpress

我正在寻找一个插件或自定义编码解决方案,用户只需要在他的邮件地址中输入以进行注册.没有用户名,没有密码.

我找到了这个插件,但最后一次更新是两年前.. https://wordpress.org/plugins/smart-wp-login/

Atl*_*dal 5

是的,你可以做到这一点.

规则1: WordPress需要用户名.我们必须提供用户名.

规则2:不要编辑WordPress核心代码.

我们可以通过隐藏用户名字段,获取电子邮件并将其存储为用户名来实现.

步骤1:删除用户名文本字段

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
});
Run Code Online (Sandbox Code Playgroud)

步骤2:删除用户名错误

//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);
Run Code Online (Sandbox Code Playgroud)

步骤3:操纵背景注册功能.

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'];
}
});
Run Code Online (Sandbox Code Playgroud)

将上面的代码放在主题的functions.php文件中.