//让WordPress支持用户名或邮箱登录
function dr_email_login_authenticate( $user, $username, $password ) {
if ( is_a( $user, 'WP_User' ) )
return $user;
if ( !empty( $username ) ) {
$username = str_replace( '&', '&', stripslashes( $username ) );
$user = get_user_by( 'email', $username );
if ( isset( $user, $user->user_login, $user->user_status ) && 0 == (int) $user->user_status )
$username = $user->user_login;
}
return wp_authenticate_username_password( null, $username, $password );
}
remove_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3 );
add_filter( 'authenticate', 'dr_email_login_authenticate', 20, 3 );
//替换“用户名”为“用户名 / 邮箱”
function username_or_email_login() {
if ( 'wp-login.php' != basename( $_SERVER['SCRIPT_NAME'] ) )
return;
?><script type="text/javascript">
// Form Label
if ( document.getElementById('loginform') )
document.getElementById('loginform').childNodes[1].childNodes[1].childNodes[0].nodeValue = '<span style="color: #000000; font-weight: bold;"><?php</span> <span style="color: #b1b100;">echo</span> esc_js<span style="color: #009900;">(</span> __<span style="color: #009900;">(</span> <span style="color: #0000ff;">'用户名/邮箱'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'email-login'</span> <span style="color: #009900;">)</span> <span style="color: #009900;">)</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?></span>';
// Error Messages
if ( document.getElementById('login_error') )
document.getElementById('login_error').innerHTML = document.getElementById('login_error').innerHTML.replace( '<span style="color: #000000; font-weight: bold;"><?php</span> <span style="color: #b1b100;">echo</span> esc_js<span style="color: #009900;">(</span> __<span style="color: #009900;">(</span> <span style="color: #0000ff;">'用户名'</span> <span style="color: #009900;">)</span> <span style="color: #009900;">)</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?></span>', '<span style="color: #000000; font-weight: bold;"><?php</span> <span style="color: #b1b100;">echo</span> esc_js<span style="color: #009900;">(</span> __<span style="color: #009900;">(</span> <span style="color: #0000ff;">'用户名/邮箱'</span> <span style="color: #339933;">,</span> <span style="color: #0000ff;">'email-login'</span> <span style="color: #009900;">)</span> <span style="color: #009900;">)</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?></span>' );
</script><span style="color: #000000; font-weight: bold;"><?php</span>
<span style="color: #009900;">}</span>
add_action<span style="color: #009900;">(</span> <span style="color: #0000ff;">'login_form'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'username_or_email_login'</span> <span style="color: #009900;">)</span><span style="color: #339933;">;</span>
请先
!