'wp_redirect'无效

Rin*_*ver 10 wordpress redirect

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

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

<form accept-charset="UTF-8" method="post" >
    ...
    <center><input name="login" type="submit" value="????" />
</form>
Run Code Online (Sandbox Code Playgroud)

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

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

PS:

<?php wp_redirect( 'http://www.example.com', 301 ); exit; ?>
Run Code Online (Sandbox Code Playgroud)

它也不起作用.

Pra*_*Deb 8

使用以下代码: -

function app_output_buffer() {
    ob_start();
} // soi_output_buffer
add_action('init', 'app_output_buffer');
Run Code Online (Sandbox Code Playgroud)

或者添加ob_start()作为你自己的函数的第一行,它挂钩到'init'

别忘了添加

exit();
Run Code Online (Sandbox Code Playgroud)

你打电话后立即

wp_redirect($url);
Run Code Online (Sandbox Code Playgroud)

链接:

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


rev*_*evo 6

我认为你的代码不是以这种if情况开始的!

wp_redirect 将发送标题,因此打印/回显之前的内容将导致失败.

所以在此之前检查并查看:

if(isset($_POST['login'])) 
{
    wp_redirect("/");
    exit;
}
Run Code Online (Sandbox Code Playgroud)

没有特色.也别忘了放好exit;wp_redirect.


小智 5

只需按照以下方式使用即可:

ob_clean();
$url = get_home_url() . '/login';
wp_redirect($url);
exit();
Run Code Online (Sandbox Code Playgroud)

或者您也可以使用 Javascript 来实现重定向。

<script>window.location='http://www.google.com'</script>
Run Code Online (Sandbox Code Playgroud)


Bro*_*yes 1

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

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');
Run Code Online (Sandbox Code Playgroud)

PHP 标头重定向不起作用

编辑:

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

ob_start();

长期的答案是 PHP 脚本的所有输出都应该缓冲在变量中。这包括标题和正文输出。然后在脚本末尾执行您需要的任何输出。

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

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

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