Após pesquisar por alguns dias e ler os tópicos de 2 anos, estou tendo dificuldade em encontrar uma solução para o problema de ter os usuários logados apenas por email.
No começo, fiquei encantado ao ver WP_Email_Login apenas para descobrir que você ainda pode usar seu nome de usuário para fazer login. Não sei como escrever isso como um plugin. Minha idéia é substituir a função register_new_user. Eu não vi isso na lista de funções "conectáveis". Posso usar filtros / ação para fazer isso?
Sei que não está na moda editar os arquivos principais, por isso espero que exista uma solução, no entanto, se não existir, vou me arriscar. Na primeira linha da função "register_new_user" no wp-login.php, posso adicionar:
$nickname_variable(??) = $user_login // set the nickname to the username
$user_login = $user_email; // set the user_login/username to the email address
Isso funciona muito bem, já que o WordPress não permite que as pessoas alterem seu nome de usuário. Na tela de registro (formulário), solicita o nome de usuário e o email; Eu gostaria de definir o nome de usuário para a variável apelido (se alguém puder me dizer como é chamada a variável apelido ou onde é definida durante o registro, isso seria apreciado).
Felicidades,
Smith
Respostas:
Atualização: Criei um plugin para login, registro e recuperação de senha por e-mail. https://wordpress.org/plugins/smart-wp-login/
Em resumo, você pode configurar o WordPress para fazer login com e-mail.
Três etapas:
Uma nota:
Remova a função de autenticação padrão do WordPress.
O WordPress usa o filtro " autenticar " para realizar validação adicional no login do usuário.
Adicionar função de autenticação personalizada
Altere o texto "Nome de usuário" em wp-login.php para "Email"
Podemos usar o filtro gettext para alterar o texto "Nome de usuário" para "E-mail" sem editar os arquivos principais.
Também escrevi um artigo detalhado no meu blog http://www.thebinary.in/blog/wordpress-login-using-email/
fonte
É possível, você deve alterar o filtro para o nome.
Uma alternativa é um plugin, você encontra no Google oder no repositório de plugins; talvez este plugin .
fonte
Usando o código acima:
Tudo o que precisamos fazer foi verificar se o nome de usuário fornecido parecia pelo menos um e-mail e, se não, sabotar o nome de usuário.
fonte
'@'
o nome de usuário, Wordpress tem um prático built-in função: sanitize_email irá retornar um formato de endereço de email válido ou nada:sanitize_email('email¬!"@business_com'); // Returns nothing
já está dentro
WP-CORE
!agora o wordpress já permite registrar EMAIL como nome de usuário. mas se você estiver falando de usuários já registrados, tente as respostas listadas.
fonte
Pequenas modificações no código acima devem ser tudo o que é necessário para criar uma solução elegante. A documentação para o gancho de autenticação afirma que um
WP_User
objeto ouWP_Error
objeto deve ser retornado.O código fonte da função wp_authenticate_username_password é executado através de algumas verificações bastante simples; podemos apenas replicar a maneira como essas verificações são feitas e criar um novo
WP_Error
objeto para lidar com o endereço de email. Como alternativa, poderíamos até bloquear owp_authenticate_username_password
código e modificá-lo, se quiséssemos, embora isso pareça desnecessário, a menos que você realmente queira personalizar como as coisas funcionam. O código abaixo deve fazer o truque: (Embora eu não o tenha testado ...)fonte
Existe um plugin para isso:
Forçar login por email
https://br.wordpress.org/plugins/force-email-login/
Também está no Github: https://github.com/miya0001/force-email-login
fonte