Как настроить вход в админку WordPress по email адресу

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

По-умолчанию, WordPress назначает уникальные имена пользователей для всех пользователей, зарегистрированных на сайте. В виду того, что имена уникальны, существует вероятность того, что логин, который пользователь захочет использовать, будет уже занят, и ему придется выбрать себе другой логин, который он может и не запомнить. Если он не запомнит свое имя пользователя, то ему будет сложно залогиниться в систему. Сегодняшний сниппет поможет вам настроить вход в админку для пользователей по их email, привязанному к аккаунту.

Мы будем использовать действие wp_authenticate, которое выполняет прежде, чем WordPress аутентифицирует пользователя, и здесь мы сможем изменить имя пользователя и пароль, отправленный пользователем.

Внутри этой функции, когда мы возьмем $username (имя пользователя, отправленное нам формой логина), мы затем обработаем это значение и выполним поиск email пользователя. Если вернется пользователь как объект, мы подменим логин на имя пользователя из найденного объекта пользователя.

add_action( 'wp_authenticate', 'email_address_login' );

function email_address_login( &$username, &$password )
{
    $user = get_user_by( 'email', $username );

    if( !empty( $user->user_login ) )
    {
        $username = $user->user_login;
    }
}

Важно отметить, что это срабатывает по-другому с другими WordPress действиями путем отправки параметров в качестве ссылки. Что означает, что это действие лучше сработает в коде ядра в виде фильтра, так как оно требует передачи параметров, изменения значений и их возврата.

Так как это — действие, оно обрабатывает параметры, определенные амперсандом в списке параметров функций. Это означает, что вам не нужно возвращать какие-либо значения из этой функции, а просто нужно изменить значения переменных и они автоматически будут возвращены функцией.

Вы можете посмотреть, как это работает в WordPress, заглянув в код ядра в месте выполнения wp_authenticate.

Внутри файла /wp-includes/user.php в строке 54 вы увидите следующий код:

do_action_ref_array( 'wp_authenticate', array( &$credentials['user_login'], &$credentials['user_password'] ) );

Обычно, когда вызывается действие, оно использует функцию do_action(), однако наше — использует функцию do_action_ref_array() и обрабатывает значения в качестве ссылки.

Мы надеемся, что эта статья помогла вам настроить для ваших пользователей возможность входа на сайт WordPress по email адресу.

По всем вопросам и отзывам просьба писать в комментарии ниже.

Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.

VN:F [1.9.22_1171]

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии