在大家的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、有問題可以回覆