在大家的WordPress站点中,如果访客注册了用户,默认只能使用「用户名」登陆,导致了一些不方便,所以今天就来教大家如何给WordPress添加电子邮件登陆的功能
教程
1、你只需要把下列代码添加至你主题文件夹下的「布景函式库 (functions.php)」文件内就可以啦!(简体中文Wordpress用户须把 echo esc_js( __( '帐号' ) );
内的 帐号
改成 用户名
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
/* 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"> if ( document.getElementById('loginform') ){ document.getElementById('loginform').childNodes[1].childNodes[1].childNodes[0].nodeValue = '<?php echo esc_js( __( '你的帐号或邮箱', 'email-login' ) ); ?>'; } //登陆错误信息 if ( document.getElementById('login_error') ){ document.getElementById('login_error').innerHTML = document.getElementById('login_error').innerHTML.replace( '<?php echo esc_js( __( '帐号' ) ); ?>', '<?php echo esc_js( __( '你的帐号/邮箱' , 'email-login' ) ); ?>' ); } </script><?php } add_action( 'login_form', 'username_or_email_login' ); /* Wordpress添加电子邮件登陆功能结束 */ |
总结
1、其实在上一步时简体用户需要更改代码的原因是「在显示登陆错误信息时」时,我们需要把「帐号错误」改成「帐号/邮箱错误」
2、这是个很实用的功能(虽然别人通过找回密码都能直接找回用户名。。。)
3、有问题可以回复