任何人都知道如何欺骗WordPress进行标题位置重定向。我必须检查用户是否登录,如果没有,则将他们重定向到我们的组织授权系统,该系统是一个外部站点。
我在header()调用之前从WordPress输出排队的脚本中获得输出。
Warning: Cannot modify header information - headers already sent by (output started at /.../wp-includes/class.wp-scripts.php:128) in ...
我有一个插件,它有一个类处理程序,用这个方法处理这个问题:
...
public function populateInfo($form) {
$email = $this->hasEmail($form);
/*$name = $this->hasName($form);
$address = $this->hasAddress($form);
$phone = $this->hasPhone($form);*/
// let\'s get some auth info
if($email !== false || $name !== false || $address !== false || $phone !== false) {
$ldap = new LDAP();
$webAuth = new Auth();
$curPage = \'http://\' . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'];
$webAuth->url = $curPage;
if($webAuth->isLoggedIn()) {
$ldap->search($webAuth->getID());
// set up form variables
$form[\'fields\'][$email[\'key\']][\'defaultValue\'] = $ldap->getEmail();
} else {
// this is where redirect fails
wp_redirect($webAuth->login_url);
return;
}
}
return $form;
}
...
更新:此方法通过GravityForms过滤器调用:
add_filter(\'gform_pre_render\', array($this, \'populateInfo\'));
基本上是将信息加载到页面表单中。用户必须登录,才能填充此表单(因此
$webAuth->isLoggedIn()
检查)。很明显,我知道标题是预先输出的,我的问题是,如何在WordPress中正确解决这个问题,以便我可以将未经授权的用户重定向到登录,而不被前面的标题所包围?