Después de buscar un par de días y leer hilos de 2 años, tengo dificultades para encontrar una solución al problema de que los usuarios inicien sesión solo por correo electrónico.
Al principio, me encantó ver WP_Email_Login solo para descubrir que aún puedes usar tu nombre de usuario para iniciar sesión. No estoy seguro de cómo escribir esto como un complemento. Mi idea es anular la función register_new_user. No vi esto en la lista de funciones "conectables". ¿Puedo usar filtros / acción para lograr esto?
Me doy cuenta de que no está de moda editar los archivos principales, así que espero que haya una solución, sin embargo, si no existe una, me arriesgaré. En la primera línea de la función "register_new_user" en wp-login.php puedo agregar:
$nickname_variable(??) = $user_login // set the nickname to the username
$user_login = $user_email; // set the user_login/username to the email address
Esto funciona bastante bien ya que WordPress no permite que las personas cambien su nombre de usuario. En la pantalla de registro (formulario) solicita el nombre de usuario y correo electrónico; Me gustaría establecer el Nombre de usuario en la variable Apodo (si alguien me puede decir cómo se llama la variable apodo o dónde se establece durante el registro, eso sería de agradecer).
Salud,
Herrero
Respuestas:
Actualización: he creado un complemento para iniciar sesión, registrarme y recuperar la contraseña con un correo electrónico. https://wordpress.org/plugins/smart-wp-login/
En resumen, puede configurar WordPress para iniciar sesión con el correo electrónico.
Tres pasos:
Una nota:
Eliminar la función de autenticación predeterminada de WordPress.
WordPress utiliza el filtro " autenticar " para realizar una validación adicional en el inicio de sesión del usuario.
Agregar función de autenticación personalizada
Cambie el texto "Nombre de usuario" en wp-login.php a "Correo electrónico"
Podemos usar el filtro gettext para cambiar el texto "Nombre de usuario" a "Correo electrónico" sin editar archivos principales.
También he escrito un artículo detallado en mi blog http://www.thebinary.in/blog/wordpress-login-using-email/
fuente
Es posible, debe cambiar el filtro para el nombre.
Una alternativa es un complemento, que encontrará a través de Google oder en el repositorio de complementos; Tal vez este complemento .
fuente
Usando el código anterior:
Todo lo que teníamos que hacer era comprobar que el nombre de usuario proporcionado al menos parecía un correo electrónico y, si no, sabotear el nombre de usuario.
fuente
'@'
en el nombre de usuario, Wordpress tiene una práctica función incorporada: sanitize_email devolverá un formato de dirección de correo electrónico válido o nada:sanitize_email('email¬!"@business_com'); // Returns nothing
ya está adentro
WP-CORE
!ahora wordpress ya permite registrar EMAIL como nombre de usuario. pero si está hablando de usuarios ya registrados, intente las respuestas enumeradas.
fuente
Leves modificaciones al código anterior deberían ser todo lo que se necesita para crear una solución elegante. La documentación para el enlace de autenticación indica que se debe devolver un
WP_User
objeto uWP_Error
objeto.El código fuente de la función wp_authenticate_username_password ejecuta algunas comprobaciones bastante simples; simplemente podemos replicar la forma en que se realizan esas verificaciones y crear un nuevo
WP_Error
objeto para tratar con la dirección de correo electrónico. Alternativamente, incluso podríamos conectar elwp_authenticate_username_password
código y modificarlo si quisiéramos, aunque eso parece innecesario a menos que realmente desee personalizar cómo funcionan las cosas. El siguiente código debería hacer el truco: (aunque no lo he probado yo mismo ...)fuente
Hay un complemento para eso:
Forzar inicio de sesión de correo electrónico
https://br.wordpress.org/plugins/force-email-login/
También está en Github: https://github.com/miya0001/force-email-login
fuente