Аутентификация пользователей по e-mail в WordPress

На многих сайтах вы наверняка наблюдали уже следующую картину: авторизовываться на веб-ресурсе можно не только по логину и паролю, но и по паре адрес электронной почты / пароль. К сожалению в стандартной текущей версии WordPress такой возможности просто не предусмотрено, однако её не так уж трудно добавить самостоятельно. Например, вот так вот:

<?php
// Вход в блог по e-mail:
add_action('wp_authenticate', 'autentifikacia_po_elpochte');

function autentifikacia_po_elpochte($imya_polzovatelya) {
    $polzovatel = get_user_by('email', $imya_polzovatelya);
    if (!empty($polzovatel->user_login)) :
        $imya_polzovatelya = $polzovatel->user_login;
    endif;
    return $imya_polzovatelya;
}

// Замена метки в форме входа:
add_filter('gettext', 'zamena_teksta_formi_vhoda');

function zamena_teksta_formi_vhoda($tekst) {
    if (in_array($GLOBALS['pagenow'], array('wp-login.php'))) :
        if ($tekst == 'Имя пользователя') :
            $tekst = 'Имя пользователя или e-mail:';
        endif;
    endif;
    return $tekst;
}
?>

Здесь я использую функции-крючки на действие wp_authenticate и фильтр gettext. С помощью первого я реализую собственно саму возможность аутентификации по e-mail, с помощью второго заменяю label в форме входа wp-login.php.





© 2012-2014 Druweb.ru. Вы можете спокойно копировать любые материалы сайта только при наличии обратной ссылки.