12
2013
WordPress Siteye Kullanıcılar E-Postayla da Giriş Yapabilsin
WordPress sitelerine üye olan ziyaretçiler, bir kullanıcı adı ve e-posta adresi ile üye olup, üyeliklerine göre siteden faydalanabilmektedirler. Ancak çoğu ziyaretçi birçok siteye üye olurken aynı e-posta adresini kullanıyorken, kullanıcı adlarını farklı yazmak zorunda kalabiliyorlar. Örneğin kendilerinden önce başka bir o adı almış olabiliyor ya da kullanıcı tanınmamamk için farklı bir kullanıcı adı yazabiliyor. Bir süre sonra ziyaretçi kullanıcı adını unutabiliyor ama kullandığı e-posta adresi aklında kalabiliyor. Bu tür durumlar için kullanıcılara e-posta adresi ile de giriş yapabilme şansı vermek iyi olmaz mı?
Bunu yapabilmek için piyasada çeşitli eklentiler var ama ben size yine bu işi temanızın functions.php dosyasına ekleyebileceğiniz aşağıdaki kısacık kodla halletme şansı veriyorum.
//Eğer girilen e-posta adresine sahip bir kullanıcı varsa. function yakuphoca_epostayla_girisyap( $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', 'yakuphoca_epostayla_girisyap', 20, 3 ); //Aşağıdaki kod kullanıcı adı bölümünü değiştirir global $pagenow; if ($pagenow==='wp-login.php') { add_filter( 'gettext', 'user_email_login_text', 20, 3 ); function user_email_login_text( $translated_text, $text, $domain ) { if ($text === 'Username') { $translated_text = 'Kullanıcı Adı veya E-Posta Adresi'; } return $translated_text; } }
Kodlar denenmiş ve hem kullanıcı adı hem de e-posta adresi ile giriş yapılabildiği görülmüştür.