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

爱德网 WordPress经验评论191阅读模式
摘要

在默认情况,WordPress博客登陆之后会直接进入管理后台,但是若想登陆后返回登陆前的页面该怎么办呢?或者网友从搜索引擎通过搜索进入你的站点,如果想在当前页面注册登陆,默认登陆会回到网站主页,显得不太友好。

在默认情况,WordPress博客登陆之后会直接进入管理后台,但是若想登陆后返回登陆前的页面该怎么办呢?或者网友从搜索引擎通过搜索进入你的站点,如果想在当前页面注册登陆,默认登陆会回到网站主页,显得不太友好,下面是提供的解决方案:

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

在Wordpress安装目录下找到wp-login.php,用文本编辑器之类的打开(注意做好备份),在 <?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']; 
}

接着查找以下代码:

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

将其改成:

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

weinxin
我的微信
微信及版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!其他文章来源于网络,如有侵权,请联系我!
WordPress经验

禁止 WordPress 发送电子邮件通知

默认情况下,当WordPress有新用户注册或用户更改密码和电子邮件地址,WordPress会发送电子邮件通知你或者用户。 如果不需要邮件通知,可以将下面代码添加到主题函数模板functions.ph...
评论  0  访客  0
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定