Wordpress更改身份验证从用户名到电子邮件

时间:2014-08-10 20:10:20

标签: php wordpress

我必须如何或在哪里编辑wordpress以使用电子邮件进行用户身份验证而不使用用户名(因为它是默认设置)

2 个答案:

答案 0 :(得分:2)

这应该有效,将其添加到functions.php文件中:

// remove the default filter
remove_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3 );
// add custom filter
add_filter( 'authenticate', 'fb_authenticate_username_password', 20, 3 );
function fb_authenticate_username_password( $user, $username, $password ) {

// If an email address is entered in the username box, 
// then look up the matching username and authenticate as per normal, using that.
if ( ! empty( $username ) )
    $user = get_user_by( 'email', $username );

if ( isset( $user->user_login, $user ) )
    $username = $user->user_login;

// using the username found when looking up via email
return wp_authenticate_username_password( NULL, $username, $password );
}

(上面发现了here,我测试了它并为我工作了)

如果您不想修改函数文件,

EDIT:This插件也可以正常工作。

答案 1 :(得分:0)

有可能,您必须更改名称的过滤器。

//// remove the default filter
remove_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3 );
// add custom filter
add_filter( 'authenticate', 'fb_authenticate_username_password', 20, 3 );
function fb_authenticate_username_password( $user, $username, $password ) 
{

    // If an email address is entered in the username box, 
    // then look up the matching username and authenticate as per normal, using that.
    if ( ! empty( $username ) )
        $user = get_user_by( 'email', $username );

    if ( isset( $user->user_login, $user ) )
        $username = $user->user_login;

    // using the username found when looking up via email
    return wp_authenticate_username_password( NULL, $username, $password );
}
相关问题