这样或许更好|让WordPress支持用Email登录

多一种选择:

多么希望邮箱也能注册呀,虽然大家都是用QQ和微信来登陆这些了,但多一种选择未必不好呀。


默认状态下,WordPress登录页面只支持使用用户名进行登录。如果想让用户用Email也可以登录,那就将以下代码复制到当前主题的functions.php中:

  1. // 修改WordPress用户名过滤机制,通过Email获取用户名
  2. function ludou_allow_email_login($username$raw_username$strict) {
  3.   if (filter_var($raw_username, FILTER_VALIDATE_EMAIL)) {
  4.     $user_data = get_user_by(’email’, $raw_username);
  5.     if (emptyempty($user_data))
  6.       wp_die(__(‘<strong>ERROR</strong>: There is no user registered with that email address.’), ‘用户名不正确’);
  7.     else
  8.       return $user_data->user_login;
  9.   }
  10.   else {
  11.     return $username;
  12.   }
  13. }
  14. // 修改登录界面的文字,”用户名”改成”用户名或邮箱”
  15. function ludou_change_text() {
  16.   echo ‘<script type=“text/javascript”>
  17.                 var user_login_node = document.getElementById(“user_login”);
  18.                 var old_username_text = user_login_node.parentNode.innerHTML;
  19.                 user_login_node.parentNode.innerHTML = old_username_text.replace(/用户名/, “用户名或邮箱”);
  20.       </script>’;
  21. }
  22. if (in_array($GLOBALS[‘pagenow’], array(‘wp-login.php’)) && strpos($_SERVER[‘REQUEST_URI’], ‘?action=register’) === FALSE && strpos($_SERVER[‘REQUEST_URI’], ‘?action=lostpassword’) === FALSE && strpos($_SERVER[‘REQUEST_URI’], ‘?action=rp’) === FALSE ) {
  23.   add_filter(‘sanitize_user’, ‘ludou_allow_email_login’, 10, 3);
  24.   add_action(‘login_footer’, ‘ludou_change_text’);
  25. }

注意:以上代码只对登录页面有效,效果如下:

%e8%bf%99%e6%a0%b7%e6%88%96%e8%ae%b8%e6%9b%b4%e5%a5%bd%ef%bd%9c%e8%ae%a9wordpress%e6%94%af%e6%8c%81%e7%94%a8email%e7%99%bb%e5%bd%952


写在后面:

哪天忘记了登陆名字,还可以使用邮箱来注册,这是比较人性化的一个地方啦。

本文参考了https://www.ludou.org/wordpress-login-with-usernam-or-email.html ,若有任何来源问题,请联系QQ:1516677079 及时更正。

最有意思的设计站点


最好的UI素材库

我们极力推荐: