WordPress 登录后自动跳转到当前页的方法

WordPress默认情况登陆之后会直接进入管理后台,但评论模版中点击“登陆后发表评论”时可以在成功登陆后直达当前页。但是,很多时候因为主题、插件及系统变更的原因,WordPress 登录后自动跳转到到管理页或首页。

直接但是若想登陆后返回登陆前的页面该怎么办呢?

方法一:添加超链接

你可以在主题目录下的sidebar.php或者其他文件中添加以下登陆超链接:
<a href="request)) ); ?>" title="登陆后台">登陆后台a>
这样在侧边栏点击这个链接登陆后就会自动返回登录前的页面。

方法二:修改WordPress源代码

如果你是使用了WordPress提供的"功能"小工具来添加的登陆链接,上面的方法就不能奏效了,只能通过修改源代码来实现了。在Wordpress安装目录下找到wp-login.php,用文本编辑器之类的打开,在
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'];
}
接着查找以下代码:
type="hidden" name="redirect_to" value="$redirect_to); ?>" />
将其改成:
type="hidden" name="redirect_to" value="$_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做好备份,或者升级后照着上面的内容重新修改一遍。

补充:WordPress 登录后自动跳转到当前页在一些版本下可以自动实现,一些版本下则无法实现。

 

#现在前往

精选留言

WordPress,登录,自动,转到
sample
2021-06-01
写留言
签到
投稿
QQ咨询
返回顶部