Po kilku dniach szukania i przeczytaniu 2-letnich wątków mam problem ze znalezieniem rozwiązania problemu z zalogowaniem się użytkowników tylko przez e-mail.
Na początku byłem zachwycony widząc WP_Email_Login tylko po to, aby dowiedzieć się, że nadal możesz używać swojej nazwy użytkownika do logowania. Nie jestem pewien, jak zabrać się do pisania tego jako wtyczki. Moim pomysłem jest zastąpienie funkcji register_new_user. Nie widziałem tego na liście funkcji „wtykowych”. Czy mogę to zrobić za pomocą filtrów / akcji?
Zdaję sobie sprawę, że edytowanie podstawowych plików nie jest modne, więc mam nadzieję, że istnieje rozwiązanie, jednak jeśli nie istnieje, zaryzykuję. W pierwszym wierszu funkcji „register_new_user” w wp-login.php mogę dodać:
$nickname_variable(??) = $user_login // set the nickname to the username
$user_login = $user_email; // set the user_login/username to the email address
Działa to całkiem nieźle, ponieważ WordPress nie pozwala ludziom na zmianę nazwy użytkownika. Na ekranie rejestracji (formularz) prosi o podanie nazwy użytkownika i adresu e-mail; Chciałbym ustawić Nazwę użytkownika na zmienną Pseudonim (jeśli ktoś może mi powiedzieć, jak się nazywa zmienna pseudonim lub gdzie jest ustawiona podczas rejestracji, co byłoby mile widziane).
Twoje zdrowie,
Kowal
Odpowiedzi:
Aktualizacja: Stworzyłem wtyczkę do logowania, rejestracji i odzyskiwania hasła za pomocą e-maila. https://wordpress.org/plugins/smart-wp-login/
Krótko mówiąc, możesz skonfigurować WordPressa, aby logował się za pomocą e-maila.
Trzy kroki:
Jedna uwaga:
Usuń domyślną funkcję uwierzytelniania WordPress.
WordPress używa filtra „ uwierzytelniającego ”, aby przeprowadzić dodatkową weryfikację przy logowaniu użytkownika.
Dodaj niestandardową funkcję uwierzytelniania
Zmień tekst „Nazwa użytkownika” w wp-login.php na „E-mail”
Możemy użyć filtra gettext, aby zmienić tekst „Nazwa użytkownika” na „E-mail” bez edycji podstawowych plików.
Napisałem również szczegółowy artykuł na moim blogu http://www.thebinary.in/blog/wordpress-login-using-email/
źródło
Jest to możliwe, musisz zmienić filtr nazwy.
Alternatywą jest wtyczka, którą znajdziesz w Google oder w repozytorium wtyczek; może ta wtyczka .
źródło
Za pomocą powyższego kodu:
Musieliśmy tylko sprawdzić, czy podana nazwa użytkownika przynajmniej wyglądała jak e-mail, a jeśli nie, sabotuj nazwę użytkownika.
źródło
'@'
w nazwie użytkownika, Wordpress ma przydatną wbudowaną funkcję: sanitize_email zwróci albo prawidłowy format adresu e-mail, albo nic:sanitize_email('email¬!"@business_com'); // Returns nothing
już jest
WP-CORE
!teraz wordpress pozwala już zarejestrować EMAIL jako nazwę użytkownika. ale jeśli mówisz o już zarejestrowanych użytkownikach, wypróbuj wymienione odpowiedzi.
źródło
Nieznaczne modyfikacje powyższego kodu powinny wystarczyć do stworzenia eleganckiego rozwiązania. Dokumentacja dla uwierzytelnienia hakowych państw, które albo
WP_User
przedmiot lubWP_Error
powinien być zwrócony obiekt.Kod źródłowy dla wp_authenticate_username_password funkcyjnych biegnie przez niektórych dość prostych kontroli; możemy po prostu powtórzyć sposób przeprowadzania tych kontroli i utworzyć nowy
WP_Error
obiekt do obsługi adresu e-mail. Ewentualnie możemy nawet podnieśćwp_authenticate_username_password
kod i zmodyfikować go, jeśli chcemy, choć wydaje się to niepotrzebne, chyba że naprawdę chcesz dostosować sposób działania. Poniższy kod powinien załatwić sprawę: (Chociaż sam tego nie testowałem ...)źródło
Jest do tego wtyczka:
Wymuś logowanie przez e-mail
https://br.wordpress.org/plugins/force-email-login/
Jest również dostępny na Github: https://github.com/miya0001/force-email-login
źródło