问题描述
我遇到这个错误。我不知道处理这个。
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
我的 Functions.php 文件行#9 是:
<?php if(function_exists('register_sidebar'))register_sidebar();?>
而我的 pluggable.php#934 是
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_redirect) 重定向到该页面。您无法开始打印输出,然后重定向,否则您将收到您看到的错误。这就是 Paul Grime 在评论中得到的。
Ken White 对参考类似问题的帖子发表了评论。我已经通过缓冲脚本的输出来修复这个问题。
在您的主题的 functions.php
文件 (每当您的主题的页面加载时都会包含),请输入以下内容:
//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 和当前你在 A.php 你想去其他页面 B.php 点击按钮。
if(isset($_POST['save_btn']))
{
//write some of your code here, if necessary
echo'<script> window.location="B.php"; </script> ';
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。