我要投稿 | 网站地图 专注WordPress建站学习!
WordPress教程网
热门标签: wordpress wordpress教程 wordpress插件 wordpress函数 wordpress主题 functions

教程

当前位置:首页> 教程

自定义WordPress后台登录页面样式与登录地址url的方法

来源(作者):互联网   发布时间: 2019-10-22  游览次数:33次

之前也常有看到一些Wordpress的站点做了很多个性化的修改,其中就有今天我们要提到的自定义Wordpress后台登录地址url的方法,刚好有项目需要用到,在使用过程中发现的一些问题做一下总结与记录。

首先插件的方法。因为个人不建议过多的依赖于现有插件,所以也没有尝试过,这里不作记录,有需要的朋友可以去搜搜:Stealth Login Page等插件。

其次,要看你是想自定义成什么样的,如果仅仅是为了防止恶意注册与登录的话,那就比较简单。蒲松林用过的方法如下:

在当前模板文件里的functions.php文件<?php和?>中间加入如下代码:

//自定义后台登录地址
add_action('login_enqueue_scripts','login_protection');  
function login_protection(){  
    if($_GET['do'] != 'login')header('Location: http://www.wpabc.net/');  
}

主要是通过GET方式提交URL并作判断,如果访问地登录地址不是/wp-login.php?do=login则返回到上面定义的网址。修改成一个比较有个性的就能有效的防止恶意登陆了。
但是段代码有一个很严重的问题,那就是注册用户时访问wp-register.php?action=register或者/wp-register.php都会被重定向到上面定义的网址上去。因此上面的代码适用于非开放注册的个人用户。

我们想要实现的是Wordpress的登录地址为:www.xxx.com/login/的形式,同时还要支持多用户注册,注册页面的地址也自定 义为:www.xxx.com/register/这样。下面是实现 方法:

先创建一个自定义模板:

<?php
/*
Template Name: 自定义登陆页面
*/
?>
<?php
global $wpdb,$user_ID;
 
if (!$user_ID) { //判断用户是否登录
 
	if($_POST){ //数据提交
		//We shall SQL escape all inputs
		$username = $wpdb->escape($_REQUEST['username']);
		$password = $wpdb->escape($_REQUEST['password']);
		$remember = $wpdb->escape($_REQUEST['rememberme']);
	
		if($remember){
			$remember = "true";
		} else {
			$remember = "false";
		}
		$login_data = array();
		$login_data['user_login'] = $username;
		$login_data['user_password'] = $password;
		$login_data['remember'] = $remember;
		$user_verify = wp_signon( $login_data, false ); 
		//wp_signon 是wordpress自带的函数,通过用户信息来授权用户(登陆),可记住用户名
		
		if ( is_wp_error($user_verify) ) { 
			echo "<span class='error'>用户名或密码错误,请重试!</span>";//不管啥错误都输出这个信息
			exit();
		} else { //登陆成功则跳转到首页(ajax提交所以需要用js来跳转)
			echo "<script type='text/javascript'>window.location='". get_bloginfo('url') ."'</script>";
			exit();
		}
	} else {
 
get_header();//载入头部文件
?>
<!--<script src="http://code.jquery.com/jquery-1.4.4.js"></script>--><!--如果你发现没有ajax提交,请检查是否有引入jquery.js文件-->
<div id="container">
<div id="content">
<h3>登陆页面 - 蒲松林的博客</h3>
<div id="result"></div> <!-- 输出结果 -->
<form id="wp_login_form" action="" method="post">
<label>用户名</label><br />
<input type="text" name="username" class="text" value="" /><br />
<label>密码</label><br />
<input type="password" name="password" class="text" value="" /> <br />
<label>
<input name="rememberme" type="checkbox" value="forever" />记住我</label>
<br /><br />
<input type="submit" id="submitbtn" name="submit" value="Login" />
</form>
 
<script type="text/javascript"><!--ajax 提交数据-->						
$("#submitbtn").click(function() {
<!--请准备一个gif图-->
$('#result').html('<img src="<?php%20bloginfo('template_url');%20?>/images/loader.gif" class="loader" />').fadeIn();
var input_data = $('#wp_login_form').serialize();
$.ajax({
type: "POST",
url:  "<?php echo "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>",
data: input_data,
success: function(msg){
$('.loader').remove();
$('<div>').html(msg).appendTo('div#result').hide().fadeIn('slow');
}
});
return false;
 
});
</script>
 
</div>
</div>
<?php
get_footer(); //载入底部文件
	}
}
else { //跳转页面
	echo "<script type='text/javascript'>window.location='". get_bloginfo('url') ."'</script>";
}
?>

把上面的样式修改成自己的,再新建一个页面,url设置为login,并选择上面新增的模板。这样就可以通过访 问:www.xxx.com/login/进行登录了。接下我们就是要解决访问Wordpress默认的登录地址时,自动重定向到新建立的页面上来。如果 用最上面的方法肯定会导致无法进行用户注册。解决方法其实也简单,原理跟最上面的也一样,具体如下:

在wp-login.php文件最前面增加如下代码:

<?php
    if($_GET["do"]!="login"){
   header('Location: /login/');
}
?>

这样就行了 !

标签 : , ,

本文版权归原作者所有,转载请注明原文来源出处, WordPress教程网 感谢您的支持!

本文链接: http://www.wpabc.net/68.html

WordPress教程网
WordPress教程网
相关内容