为你的WordPress主题添加一个登录表单

为你的WordPress主题添加一个登录表单,就想我的博客一样。直接用邮箱或用户名登录,是不是很方便呢?下面来教大家实现这样的功能。
前台代码


    
ID,'20');?> display_name; ?>

数据是提交到wp-login.php页面的,不是我们预期的效果。我们可以用AJAX提交数据,这样就避免了页面的跳转。
AJAX提交数据代码

//回车直接提交数据
 $('.signin-box').live('keydown',function(event){
			event.keyCode==13 && $('.signin-box button')[0].click();
  }),
  $(".signin-box button").click(function() {
    var b = $.trim(a("input[name='log']").val()),
    c = $.trim(a("input[name='pwd']").val());
				if(b=='' || c==''){
					return false;
				}
    $.post("wp-content/themes/rabbit/includes/ajax.php", {
      action: "login",
      log: b,
      pwd: c
    },
    function(b) {
      $.indexOf("\u9519\u8bef") > -1 ? $("#login_err").length > 0 ? $("#login_err").slideDown(300).html(b) : $(".signin-box").append('
' + b + "
") : $(".signin-box").replaceWith('
' + b + "
") }) })

后台处理提交的数据代码,首先判断是否以邮箱登录,再通过邮箱得到用户名,验证密码和用户名是否正确。

function chklogin(){
		$log = $_POST['log'];
		$pwd = $_POST['pwd'];
		if (strrpos($log,'@')!= 0){
				$log = get_user_by('email',$log);
				if($log){
				$log = $log->user_login;
				}else{
						echo ('错误:邮箱无效。忘记密码?');
						exit();
				}
		}
		$creds = array();
		$creds['user_login'] = $log;
		$creds['user_password'] = $pwd;
		$creds['remember'] = true;
		$user = wp_signon( $creds, false );
		if ( is_wp_error($user) )
					echo $user->get_error_message();
		else
					echo ''. get_avatar($user->ID,'20') .''. $user->display_name .'';
}

注意根据你的需要,修改一下代码中的细节,如果要达到很好的显示效果,最好自己在结合自己的主题样式,添加CSS样式代码。

“为你的WordPress主题添加一个登录表单”的6个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注