自定义WordPress后台登录页面样式与登录地址url的方法
之前也常有看到一些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.wpcn.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.wpcn.net/68.html
- wp_list_comments()使用回调函数自定义评论…
- WordPress函数:comment_form() 让你的 Word…
- WordPress过滤器(Filters):apply_filters和…
- WordPress函数:comments_template(加载评…
- WordPress函数:comment_form( )个性化评论…
- 无处不在的WordPress的主循环
- WordPress 函数do_action()详解和应用举例
- WordPress函数:add_menu_page()后台添加顶…
- WordPress函数:add_theme_page()后台添加设…
- WordPress 函数:get_template_part()调用你…
- WordPress函数:load_theme_textdomain()(…
- WordPress 3D旋转彩色标签云
- WordPress文本小工具运行PHP
- WordPress无插件实现主题彩色标签云的N种方…
- WordPress函数:wp_tag_cloud(标签云)详解和…
- WordPress函数:register post type (自定义…
- WordPress使用register_post_type 函数创建…
- WordPress函数:add_meta_box(自定义添加Me…
- WordPress函数:get_permalink()获取文章页…
- WordPress使用query_posts()函数WP_Query类…
- WordPress调用置顶文章显示置顶数量的三种方…
- WordPress分类列表函数:wp_list_categories…
- WordPress友情链接函数wp_list_bookmarks使…
- WordPress判断文章分类函数in_category和is_…