Сейчас все чаще можно встретить сайты, на которых вход можно производить и с помощью имени и пароля, и с помощью электронного адреса и пароля (на выбор) – обычно об этом говорит надпись “введите имя или e-mail”. Пользователи, имея множество регистраций на разных сайтах, могут и забыть имя, которое они указали при регистрации, а вот почтовых адресов, используемых при регистрации, бывает не так уж и много. Поэтому можно, а иногда и нужно добавлять в блог возможность входа по e-mail + пароль.
Чтобы добавитьвозможность входа по связке e-mail + пароль, откройте файл functions.php, и добавьте в него этот код:
add_filter('authenticate', 'wp_authenticate_username_password_redux', 20, 3); function wp_authenticate_username_password_redux( $user, $username, $password ) { if ( is_email( $username ) ) { $user_obj = get_user_by_email( $username ); if ( $user_obj ) $username = $user_obj->user_login; } return wp_authenticate_username_password( $user, $username, $password ); }
Теперь пользователь, чтобы залогиниться, может указывать как логин + пароль, так и e-mail + пароль.
Маленький вопросик: как добавить соответствующее уведомление в форму ввода логина и пароля?
Самый простой способ – изменить одну строчку в форме входа (файл wp-login.php в корне сайта):
[img]https://n-wp.ru/wp-content/uploads/2011/08/tiaurus-2011-08-01_150917.png[/img]
В строке 636 поменять
на
Возможно, программисты смогут придумать какой-нибудь фильтр для functions.php, меняющий label в форме loginform. Результат:
[img]https://n-wp.ru/wp-content/uploads/2011/08/tiaurus-2011-08-01_151718.png[/img]
Благодарю. И насчет строчки программистов поддерживаю, потому что при первом же обновлении движка настройка слетит.
Благодарствую – то, что надо!
Отлично!!! Жму руку.
Чуть измененный вариант Sergey Biryukov работающий с любыми локализациями WordPress:
Попробовал провернуть на версии 3.3.2 – выдает ошибку
пишет, что вызывается несуществующая функция.
Что делать?
Проверил фрагмент кода из записи на WordPress 3.3.2 — работает корректно.
Как полностью выглядит сообщение об ошибке?