无法修改标头信息 - 标头已由...WordPress Issue

2022-08-30 11:38:40

我遇到此错误。我不知道处理这个问题。

无法修改标头信息 - 已由 /home/ben213/public_html/wp-include/pluggable 中的 /home/ben213/public_html/wp-content/themes/Bendaggers/functions.php:9) 发送的标头.php位于第 934 行

我的函数.php文件行 # 9 是:

<?php if(function_exists('register_sidebar'))register_sidebar();?>

而我的可插拔.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;

我很难弄清楚这一点,因为我不是程序员。似乎出了什么问题?请帮帮我...


答案 1

您的主题正在将输出(文本)打印到浏览器,但是由于某种原因,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在必要时重定向用户,作为其自身逻辑的一部分。


答案 2

如果您尝试从当前页面重定向到另一个页面,其中您已施加条件或没有条件,请使用此代码。E.gs 你有两个页面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> ';
     }

推荐