Cannot modify header information – headers already sent by
这个错误在WordPress中并不陌生,不管是主题还是插件都有可能引起这个错误。如果服务器已经开始传送HTML页面,这时候重定向就会引发这个报错。解决方式一是检查重定向代码的位置,在传送HTML页面之前进行。解决方式二就是让服务器放水,知道有这个错误也不要报告。
解决方案
在WordPress中,目前发现有两种方式可以让服务器静默这个错误。
第一,ob_start()函数,在主题functions.php中或者插件中添加如下代码即可
add_action('init', 'do_output_buffer'); function do_output_buffer() { ob_start(); }
这样就可以放心的使用wp_redirect()重定向了。
第二,不使用wp_redirect,用meta重定向
在你需要些wp_redirect的地方用下面的代码取而代之
<?php echo "<meta http-equiv='refresh' content='0;url=$location' />"; ?>
$location是重定向的地址
参考文章
方法一的来源
《Cannot modify header information – headers already sent by… Wordpress Issue》
方法二的来源
《WordPress wp_redirect problem : Warning: Cannot modify header information – headers already sent by…》
这篇文章帮了我大忙了……谢谢
我一直遇到这个问题,想换用其他的跳转方式,虽然可用但是不能让人满意,ob_start()很神奇
困扰许久的问题终于解决了~~~~~
你的博客好漂亮啊,这主题是点点网提供的吗?
恩,是啊~直接用的点点的博客,然后绑定域名~~能加一下我的QQ么?我有点问题想要请教你~1012728362,谢谢啦~~
不好意思,让你说了两次,早上还想着呢,后来一忙和给忘了