Cannot modify header information - headers already sent by… WordPress Issue
本问题已经有最佳答案,请猛点这里访问。
我遇到了这个错误。我不知道该怎么办。
Cannot modify header information - headers already sent by (output
started at
/home/ben213/public_html/wp-content/themes/Bendaggers/functions.php:9)
in /home/ben213/public_html/wp-includes/pluggable.php on line 934
my functions.php文件行9是:
1 |
而我的pluggable.php 934是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function wp_redirect($location, $status = 302) { global $is_IIS; $location = apply_filters('wp_redirect', $location, $status); $status = apply_filters('wp_redirect_status', $status, $location); if ( !$location ) // allows the wp_redirect filter to cancel a redirect return false; $location = wp_sanitize_redirect($location); if ( !$is_IIS && php_sapi_name() != 'cgi-fcgi' ) status_header($status); // This causes problems on IIS and some FastCGI setups header("Location: $location", true, $status);} endif; |
因为我不是程序员,所以我很难弄清楚。怎么了?请帮帮我…
您的主题是将输出(文本)打印到浏览器,但出于某种原因,WordPress会在呈现整个页面之前将用户重定向(使用wp_重定向)离开该页面。您不能开始打印输出然后重新定向,否则您会看到错误。这就是保罗·格里姆在评论中所说的。
KenWhite在评论时提到了一篇有类似问题的文章。在我自己的经验中,我通过缓冲脚本的输出来解决这个问题。
在主题的
1 2 3 4 5 | //allow redirection, even if my theme starts to send output to the browser add_action('init', 'do_output_buffer'); function do_output_buffer() { ob_start(); } |
现在,即使主题的一部分开始向浏览器发送输入,PHP也不会在页面完全加载之前发送该文本,这允许WordPress在必要时将用户重定向为自己逻辑的一部分。
如果您正试图从当前页面重定向到另一个页面,在该页面中,您强制了一个条件或没有条件,那么请使用此代码。例如,您有两个页面a.php、&b.php和currenty,您在a.php中单击按钮时要转到其他页面b.php。
1 2 3 4 5 | if(isset($_POST['save_btn'])) { //write some of your code here, if necessary echo' window.location="B.php"; '; } |