11

有一个 HTML 表单输入。这是代码:

<?php if(isset($_POST['login'])) { 
    wp_redirect("/"); 
}

<form accept-charset="UTF-8" method="post" >
    ...
    <center><input name="login" type="submit" value="вход" />
</form>

但是重定向不起作用。安装调试插件重定向到 wp,这就是它所显示的。

http://i.stack.imgur.com/Im4eE.png

PS:

<?php wp_redirect( 'http://www.example.com', 301 ); exit; ?>

它也不起作用。

4

6 回答 6

10

使用以下代码:-

function app_output_buffer() {
    ob_start();
} // soi_output_buffer
add_action('init', 'app_output_buffer');

或者添加 ob_start() 作为您自己的函数的第一行,该函数与“init”挂钩

不要忘记添加

exit();

在您致电后立即

wp_redirect($url);

关联:

https://tommcfarlin.com/wp_redirect-headers-already-sent/

于 2015-06-17T12:05:01.590 回答
7

我认为您的代码不是以该if条件开头的!

wp_redirect将发送一个标题,因此在它之前打印/回显某些内容将导致失败。

因此,在此之前检查并查看是否:

if(isset($_POST['login'])) 
{
    wp_redirect("/");
    exit;
}

没有字符输出。也不要忘记放在exit;正确的后面wp_redirect

于 2013-10-25T10:58:59.070 回答
4

只需按照以下方式使用它:

ob_clean();
$url = get_home_url() . '/login';
wp_redirect($url);
exit();

或者您也可以使用 Javascript 进行重定向。

<script>window.location='http://www.google.com'</script>
于 2016-07-01T05:21:41.817 回答
0

尝试以下操作,这也强制错误报告:

error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);


flush();
header("Location: http://www.website.com/");
die('should have redirected by now');

PHP 标头重定向不起作用

编辑:

由于它会给您警告,请尝试在代码的最开头headers already sent添加以下内容:

ob_start();

长期的答案是 PHP 脚本的所有输出都应该缓冲在变量中。这包括标题和正文输出。然后在你的脚本结束时做你需要的任何输出。

解决问题的最快方法是添加 ob_start(); 如果您只在这个脚本中需要它,那么作为脚本中的第一件事。如果您在所有脚本中都需要它,请将其添加为 header.php 文件中的第一件事。

这将打开 PHP 的输出缓冲功能。在 PHP 中,当您输出某些内容(执行回显或打印)时,如果当时必须发送 HTTP 标头。如果您打开输出缓冲,您可以在脚本中输出,但 PHP 在刷新缓冲区之前不必发送标头。如果您打开它并且不关闭它,PHP 将在脚本完成运行后自动刷新缓冲区中的所有内容。在几乎所有情况下打开它确实没有什么害处,并且可以在某些配置下给你带来小的性能提升......

来自警告:无法修改标头信息 - 标头已发送..

于 2013-10-25T10:48:30.373 回答
0

我遇到了同样的问题,这些解决方案都不适合我。

我注意到页面上唯一不同的是我在wp_redirect下面get_header()使用它,如果你在它上面使用它会正常工作。

于 2018-08-20T03:45:40.973 回答
0

确保您没有:get_header();或任何可能在模板中创建页眉和页脚等内容的 wordpress 函数。否则重定向将不起作用。

一些开发人员试图通过使用来清除页面,ob_start();但如果您的页面中有内容,即使您使用ob_start();重定向也不起作用。

然后只需尝试以下代码:

wp_redirect(get_permalink($post->ID));
exit;
于 2019-01-16T21:35:26.560 回答