Après avoir recherché quelques jours et lu des fils de discussion de 2 ans, j'ai du mal à trouver une solution au problème de la connexion des utilisateurs par e-mail uniquement.
Au début, j'étais ravi de voir WP_Email_Login uniquement pour découvrir que vous pouvez toujours utiliser votre nom d'utilisateur pour vous connecter. Je ne sais pas trop comment écrire ceci en tant que plugin. Mon idée est de remplacer la fonction register_new_user. Je ne l'ai pas vu sur la liste des fonctions "enfichables". Puis-je utiliser des filtres / action pour y parvenir?
Je me rends compte que ce n'est pas à la mode d'éditer les fichiers de base, donc j'espère qu'une solution est là, mais si elle n'existe pas, je vais tenter ma chance. Dans la première ligne de la fonction "register_new_user" dans wp-login.php je peux ajouter:
$nickname_variable(??) = $user_login // set the nickname to the username
$user_login = $user_email; // set the user_login/username to the email address
Cela fonctionne très bien car WordPress ne permet pas aux gens de changer leur nom d'utilisateur. Dans l'écran d'enregistrement (formulaire), il demande le nom d'utilisateur et l'adresse e-mail; Je voudrais définir le nom d'utilisateur sur la variable de surnom (si quelqu'un peut me dire comment la variable de surnom est appelée ou où elle est définie lors de l'inscription, ce serait apprécié).
À votre santé,
Forgeron
Réponses:
Mise à jour: j'ai créé un plugin pour la connexion, l'enregistrement et la récupération du mot de passe par e-mail. https://wordpress.org/plugins/smart-wp-login/
Répondez en bref, vous pouvez configurer WordPress pour vous connecter par e-mail.
Trois étapes:
Une note:
Supprimez la fonction d'authentification par défaut de WordPress.
WordPress utilise un filtre " authentifier " pour effectuer une validation supplémentaire lors de la connexion de l'utilisateur.
Ajouter une fonction d'authentification personnalisée
Changer le texte "Nom d'utilisateur" dans wp-login.php en "Email"
Nous pouvons utiliser le filtre gettext pour changer le texte "Nom d'utilisateur" en "Email" sans modifier les fichiers de base.
J'ai également écrit un article détaillé sur mon blog http://www.thebinary.in/blog/wordpress-login-using-email/
la source
C'est possible, vous devez changer le filtre pour le nom.
Une alternative est un plugin, que vous trouverez via Google ou dans le repo du plugin; peut - être ce plugin .
la source
En utilisant le code ci-dessus:
Tout ce que nous avions à faire était de vérifier que le nom d'utilisateur fourni ressemblait au moins à un e-mail et sinon de saboter le nom d'utilisateur.
la source
'@'
dans le nom d'utilisateur, Wordpress a une fonction intégrée pratique: sanitize_email retournera soit un format d'adresse e-mail valide, soit rien:sanitize_email('email¬!"@business_com'); // Returns nothing
c'est déjà dedans
WP-CORE
!maintenant wordpress permet déjà d'enregistrer EMAIL comme nom d'utilisateur. mais si vous parlez d'utilisateurs déjà enregistrés, essayez les réponses répertoriées.
la source
De légères modifications au code ci-dessus devraient être tout ce qui est nécessaire pour créer une solution élégante. La documentation du hook d'authentification indique qu'un
WP_User
objet ou unWP_Error
objet doit être retourné.Le code source de la fonction wp_authenticate_username_password passe par des vérifications assez simples; nous pouvons simplement reproduire la façon dont ces vérifications sont effectuées et créer un nouvel
WP_Error
objet pour gérer l'adresse e-mail. Alternativement, nous pourrions même valider lewp_authenticate_username_password
code et le modifier si nous le voulions, bien que cela semble inutile, sauf si vous voulez vraiment personnaliser le fonctionnement des choses. Le code ci-dessous devrait faire l'affaire: (même si je ne l'ai pas testé moi-même ...)la source
Il y a un plugin pour ça:
Forcer la connexion par e-mail
https://br.wordpress.org/plugins/force-email-login/
C'est aussi sur Github: https://github.com/miya0001/force-email-login
la source