Ręcznie tworzę użytkowników programowo i chcę zalogować się do nowo utworzonego użytkownika. WP ułatwia dostęp do zaszyfrowanego hasła, ale nie w wersji zwykłego tekstu. Czy istnieje sposób użycia wp_signon () bez hasła w postaci zwykłego tekstu?
Znalazłem jedną osobę, która twierdzi, że zrobili to tutaj , ale to nie dla mnie.
DZIĘKI!
login
authentication
emersonthis
źródło
źródło
Odpowiedzi:
wp_set_auth_cookie()
zaloguje użytkownika bez konieczności znajomości swojego hasła.źródło
is_user_logged_in()
wydaje się nie działać. Czy wiesz, czy patrzy na coś innego niż ciasteczka?wp_set_current_user
przed zalogowaniem się.wp_set_auth_cookie()
do mojej funkcji logowania. Chyba muszę to przemyśleć. Sprawdzę również wp_set_current_user i zgłoś się. Dziękuję bardzo za pomoc w tej sprawie!Poniższy kod wykonuje automatyczne logowanie bez hasła!
źródło
get_user_by()
zwraca false w przypadku niepowodzenia, więc powinieneś sprawdzić false zamiast obiektu WP_ErrorZnalazłem tutaj inne rozwiązanie , które wykorzystuje lepsze podejście (przynajmniej moim zdaniem ...). Nie trzeba ustawiać żadnych plików cookie, używa interfejsu API Wordpress:
Myślę, że kod jest oczywisty:
Filtr wyszukuje obiekt WP_User dla podanej nazwy użytkownika i zwraca ją. Wywołanie funkcji
wp_set_current_user
z zwróconym obiektem WP_Userwp_signon
, sprawdzenie za pomocą funkcji,is_user_logged_in
aby upewnić się, że jesteś zalogowany, i to wszystko!Ładny i czysty kawałek kodu moim zdaniem!
źródło
$credentials
jest pusta, czy nie. Jeśli tablica nie jest pusta (co ma miejsce w mojej odpowiedzi), wartości z tablicy są używane do uwierzytelnienia użytkownika.Działa to dla mnie dobrze:
źródło
Oprócz Mike'a, Paula i Sjoerda:
Aby lepiej obsługiwać
login.php
przekierowania:Do umieszczenia
wp-config.php
zaraz poFYI
W oparciu o powyższe rozwiązanie wydałem wtyczkę, aby użytkownik logował się z jednego wordpressa do drugiego, synchronizując dane użytkownika i sesję plików cookie:
https://wordpress.org/plugins/user-session-synchronizer/
źródło