【发布时间】:2015-07-04 14:34:57
【问题描述】:
是否可以在设置标题后将用户重定向到正确的页面?
我在 WP 中开发了一个插件,允许用户管理他们在网站上创建的内容...例如,他们可以删除它或禁用 cmets。
作者选项出现在作者帖子的顶部...当用户单击按钮删除他们的帖子时,它会更改数据库中的一个值以软删除它:
$result = $this->db->update(
$this->_table,
array('active' => $status), // 0 / 1
array('id' => $id)
);
if($result > 0)
{
$this->setMessage('success', 'Post deleted.');
}
else
{
$this->setMessage('error', 'Some error.');
}
页面似乎在显示消息时刷新,但帖子仍在显示。在出现“此帖子不存在消息”之前必须再次刷新页面。
我尝试了很多 WP 钩子来尝试在标头之前触发 wp_redirect,但我总是收到“标头已发送”错误。
我知道我正在使用 WP,但我认为这是 http/php 的限制,所以我决定在这里发布。
我想做这样的事情:
if($result > 0)
{
header('Location: ...');
}
else
{
$this->setMessage('error', 'Some error.');
}
不能使用输出缓冲。
这种类型的重定向在 Laravel 中是可用的,你甚至可以传递一个消息变量以显示在下一页上,所以它一定是可能的。
【问题讨论】:
-
使用javascript重定向:
window.location = "http://stackoverflow.com/questions/31221812/set-header-redirect-after-page-load" ; -
<meta>重定向比 JS 解决方法更通用。另见How to fix "Headers already sent" error in PHP -
this 答案几乎就是你的答案