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)
它也不起作用.
使用以下代码: -
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/
我认为你的代码不是以这种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)
请尝试以下操作,这也会强制报告错误:
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)
编辑:
由于它向您发出警告,请尝试在代码的开头headers already sent添加以下内容:
ob_start();
长期的答案是 PHP 脚本的所有输出都应该缓冲在变量中。这包括标题和正文输出。然后在脚本末尾执行您需要的任何输出。
解决您的问题的快速方法是添加 ob_start(); 如果您只在这个脚本中需要它,则将其作为脚本中的第一件事。如果您在所有脚本中都需要它,请将其添加为 header.php 文件中的第一件事。
这将打开 PHP 的输出缓冲功能。在 PHP 中,当您输出某些内容(执行回显或打印)时,如果当时必须发送 HTTP 标头。如果您打开输出缓冲,您可以在脚本中输出,但 PHP 在刷新缓冲区之前不必发送标头。如果您打开它而不关闭它,PHP 将在脚本运行完毕后自动刷新缓冲区中的所有内容。在几乎所有情况下打开它确实没有什么坏处,并且可以在某些配置下为您带来小幅性能提升......
| 归档时间: |
|
| 查看次数: |
29840 次 |
| 最近记录: |