让WordPress在登录以后返回当前页面

2011年09月23日

默认情况下,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'];
}

然后查找以下代码:

<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); } ?>" />

如果需要logout的时候也跳转回当前页面,则可以查找:

$redirect_to = !empty( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : 'wp-login.php?loggedout=true';

将其改成:

	if( !empty( $_REQUEST['redirect_to'] ) ){
		$redirect_to = $_REQUEST['redirect_to'];
	}else{
		if ( isset($_SESSION["REFERER"]) ) {
			$redirect_to = $_SESSION["REFERER"];
		} else {
			$redirect_to = 'wp-login.php?loggedout=true';
		}
	}




归类: WORDPRESS

Leave a Reply

*

您也可以使用微博账号登陆