Zaloguj się do WordPressa za pomocą adresu e-mail zamiast nazwy użytkownika w prosty sposób
Objaśnienie
Chcesz zalogować się do WordPressa za pomocą swojego adresu e-mail zamiast nazwy użytkownika? Ten fragment kodu to umożliwia!
Jak to działa:
- Kod włącza się w proces logowania WordPressa, aby umożliwić logowanie za pomocą adresu e-mail.
- Sprawdza, czy wprowadzone dane logowania to adres e-mail. Jeśli tak, znajduje użytkownika powiązanego z tym adresem.
- Jeśli użytkownik zostanie znaleziony, używa jego nazwy użytkownika do zakończenia procesu logowania.
Zmiany w formularzu logowania:
- Etykieta formularza logowania zmienia się z "Nazwa użytkownika" na "Adres e-mail" za pomocą odrobiny JavaScriptu.
- To pomaga użytkownikom zrozumieć, że mogą wpisać swój adres e-mail zamiast nazwy użytkownika.
Dzięki temu rozwiązaniu użytkownicy mogą łatwo logować się za pomocą swojego adresu e-mail, co sprawia, że proces jest bardziej intuicyjny i przyjazny dla użytkownika.
Kod
<?php
// Allow users to log in using their email address instead of username
// Hook into the 'authenticate' filter to modify the login process
add_filter('authenticate', 'wp_dudecom_allow_email_login', 20, 3);
/**
* Allow login with email address.
*
* @param WP_User|WP_Error|null $user The authenticated user object, or WP_Error or null if not authenticated.
* @param string $username The username or email address.
* @param string $password The password.
* @return WP_User|WP_Error|null The authenticated user object, or WP_Error or null if not authenticated.
*/
function wp_dudecom_allow_email_login($user, $username, $password) {
// Check if the username is an email address
if (is_email($username)) {
// Attempt to retrieve the user by email
$user = get_user_by('email', $username);
// If a user is found, authenticate using the found user's login
if ($user) {
$username = $user->user_login;
}
}
// Return the result of the default authentication process
return wp_authenticate_username_password(null, $username, $password);
}
// Hook into 'login_form' to modify the login form
add_action('login_form', 'wp_dudecom_modify_login_form');
/**
* Modify the login form to use email address instead of username.
*/
function wp_dudecom_modify_login_form() {
?>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
var loginLabel = document.querySelector('label[for="user_login"]');
if (loginLabel) {
loginLabel.textContent = 'Email Address';
}
});
</script>
<?php
}
?>
Instrukcja
Lokalizacja pliku: Dodaj poniższy kod do pliku functions.php
swojego motywu lub do pliku własnej wtyczki.
Wymagania wstępne:
- Upewnij się, że masz dostęp do plików motywu WordPress lub możliwość stworzenia własnej wtyczki.
- Wykonaj kopię zapasową swojej strony przed wprowadzeniem zmian w kodzie.
Kroki wdrożenia:
- Uzyskaj dostęp do panelu WordPress i przejdź do Wygląd > Edytor motywu, jeśli edytujesz plik
functions.php
, lub użyj klienta FTP, aby uzyskać dostęp do plików WordPress. - Znajdź plik
functions.php
swojego aktywnego motywu lub stwórz nowy plik własnej wtyczki. - Skopiuj podany fragment kodu i wklej go na końcu pliku
functions.php
lub w pliku własnej wtyczki. - Zapisz zmiany w pliku.
- Wyloguj się ze swojej strony WordPress i spróbuj zalogować się, używając swojego adresu e-mail zamiast nazwy użytkownika, aby przetestować funkcjonalność.
Dzięki tym krokom Twoja strona WordPress umożliwi teraz użytkownikom logowanie się za pomocą adresów e-mail, co poprawi doświadczenia użytkowników, czyniąc proces logowania bardziej intuicyjnym.
Jeśli potrzebujesz dalszej pomocy w tej implementacji lub wymagasz bardziej zaawansowanej funkcjonalności, rozważ skontaktowanie się z wp-dude.com w celu uzyskania fachowej pomocy.