让WordPress站点支持用Email登录

2013-6-25 lijiayan 分享

众所周知,wordpress的登录页面只能使用用户名登录,除非安装了多说评论那样的社会化插件,才能让wordpress增加社会化登录功能。不过除了社会化登录,用户最习惯的应该是使用email邮箱登录吧。通常们会很容易忘记自己注册网站时的用户名,但注册时用的邮箱却忘不掉,你会不会有同感呢?这样的话,我们不妨给wordpress增加一个使用email登录的功能。

这项功能不仅方便于容易忘事的wordpress站长,最重要的是能够大大提升会员制wordpress网站的用户体验。如果想让用户用Email也可以登录wp网站,那就将以下代码复制到当前主题的functions.php中。代码来自低调的wp高手露兜博客

一.修改代码

// 修改WordPress用户名过滤机制,通过Email获取用户名
function ludou_allow_email_login($username, $raw_username, $strict) {
  if (filter_var($raw_username, FILTER_VALIDATE_EMAIL)) {
    $user_data = get_user_by('email', $raw_username);
    
    if (empty($user_data))
      wp_die(__('<strong>ERROR</strong>: There is no user registered with that email address.'), '用户名不正确');
    else
      return sanitize_user($user_data->user_login, $strict);
  }
  else {
    return $username;
  }
}

// 修改登录界面的文字,"用户名"改成"用户名或邮箱"
function ludou_change_text() {
  echo '<script type="text/javascript">
                var user_login_node = document.getElementById("user_login");
                var old_username_text = user_login_node.parentNode.innerHTML;
                user_login_node.parentNode.innerHTML = old_username_text.replace(/用户名/, "用户名或邮箱");
      </script>';
}

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 ) {
  add_filter('sanitize_user', 'ludou_allow_email_login', 10, 3);
  add_action('login_footer', 'ludou_change_text');
}


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

email_username



二.使用插件

插件名:WP Email Login

下载地址:http://wordpress.org/plugins/wp-email-login/installation/

下载上传安装即可,或者后台搜索安装。


标签: wordpress Email登录

评论:

mamamai
2013-07-02 09:07
博主呀,普通人只想到如何度过时间,有才能的人设法利用时间。——叔本华
蓝色悠悠
2013-06-27 13:07
不错呀,可以试试~
lijiayan
2013-06-27 23:16
@蓝色悠悠:呵呵 谢谢噶

发表评论:

Powered by emlog sitemap