WordPress登陆之后返回登陆前的页面

本文提供了解决方案,使WordPress用户在登录后台后能够自动返回登录前的页面,包括添加超链接的方法和修改WordPress源代码的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击打开链接


如果你想实现前台登录功能,可以参考这篇文章:WordPress实现前台登录功能

在默认情况,WordPress博客登陆之后会直接进入管理后台,但是若想登陆后返回登陆前的页面该怎么办呢?在WordPress中文论坛有个网友提起了这个问题,下面是我给他提供的解决方案:

方法一:添加超链接

你可以在主题目录下的sidebar.php或者其他文件中添加以下登陆超链接:

1
<a href=" <?php  echo wp_login_url ( home_url (add_query_arg ( array ( ) , $wp -> request ) )  ) ;  ?>" title="登陆后台">登陆后台</a>

这样在侧边栏点击这个链接登陆后就会自动返回登录前的页面。感谢网友"快乐生活"的分享

方法二:修改WordPress源代码

如果你是使用了WordPress提供的"功能"小工具来添加的登陆链接,上面的方法就不能奏效了,只能通过修改源代码来实现了。在Wordpress安装目录下找到wp-login.php,用文本编辑器之类的打开,在 <?php 下面添加以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if  ( ! isset ( $_SESSION ) ) 
{
   session_start ( ) ;              //创建一个session会话
   session_regenerate_id ( ) ;
}

if  ( isset ( $_SERVER [ 'HTTP_REFERER' ] )  &&  $_SERVER [ 'HTTP_REFERER' ]  !=  '' 
&&  strpos ( $_SERVER [ 'HTTP_REFERER' ] , 'admin' )  ==  false
&&  strpos ( $_SERVER [ 'HTTP_REFERER' ] , 'login' )  ==  false )
{
   // 登陆前的页面地址
   // 如果你想登陆后返回首页,请将 $_SERVER['HTTP_REFERER'] 改成 'http://你的首页网址'
   $_SESSION [ "REFERER" ]  =  $_SERVER [ 'HTTP_REFERER' ] ; 
}

接着查找以下代码:

1
<input type="hidden" name="redirect_to" value=" <?php  echo esc_attr ( $redirect_to ) ;  ?>" />

将其改成:

1
<input type="hidden" name="redirect_to" value=" <?php  if  (  isset ( $_SESSION [ "REFERER" ] )  )  {  echo  $_SESSION [ "REFERER" ] ;  }  else  {  echo esc_attr ( $redirect_to ) ;  }  ?>" />

好了,大功造成!实现的原理很简单,就是使用了php的SESSION会话功能,打开wp-login.php首先会创建$_SESSION["REFERER"] ,它的值为登陆前的页面地址,即$_SERVER['HTTP_REFERER']。如果登陆前的网址中含有login或者admin,则不创建$_SESSION["REFERER"] ,因为这可能是登陆失败或者注销退出的情况,这样在登陆成功又跳回登录页就不好玩了。

接着是登陆表单loginform的设置,搜索name="redirect_to"的隐藏域,这个隐藏域控制登陆后跳转的目标页,我们这里这样设置:如果$_SESSION["REFERER"]已有值,则设置其跳转到登陆前的页面,否则使用默认的调转方式。

注意:以上内容在WordPress 2.9.2下测试成功,其他版本暂未测试,需要的话自己试试。另外WordPress每次自动升级会覆盖掉原来的相关文件,升级前先对wp-login.php做好备份,或者升级后照着上面的内容重新修改一遍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值