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…

5条留言

  1. 这篇文章帮了我大忙了……谢谢
    我一直遇到这个问题,想换用其他的跳转方式,虽然可用但是不能让人满意,ob_start()很神奇

    1. 你的博客好漂亮啊,这主题是点点网提供的吗?

      1. 恩,是啊~直接用的点点的博客,然后绑定域名~~能加一下我的QQ么?我有点问题想要请教你~1012728362,谢谢啦~~

        1. 不好意思,让你说了两次,早上还想着呢,后来一忙和给忘了

评论功能已关闭