0

我在警告无法修改 wordpress 中的标题信息时遇到问题:无法修改标题信息 - 标题已发送(输出开始于 /home/sixtydev/public_html/voxxydev/wp-content/themes/voxxy/header.php:15)在第 865 行的 /home/sixtydev/public_html/voxxydev/wp-includes/pluggable.php

我的重定向代码是:

if(isset($_GET['qry'])  && !empty($_GET['qry'])){
    $swl = mysql_query("update wp_share_idea set image".$_GET['qry']."='' where userId='".$delId."'");

    wp_redirect("http://60degreedeveloper.info/voxxydev/user-profile/?msg='".$delId."'");
    exit;

} 

我的 header.php 代码:

<?php
/**
 * The Header for our theme.
 *
 * Displays all of the <head> section and everything up till <div id="main">
 *
 * @package WordPress
 * @subpackage Voxxy
 * @since Voxxy 1.0
 */
?><html>
<head>
<title>Voxxy</title>
<link rel="profile" href="http://gmpg.org/xfn/11"/>
line no: 15:: <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('stylesheet_url');?>"/>
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>"/>

和plugable.php 代码:

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
line no:865:-   header("Location: $location", true, $status);
}

我很困惑,问题出在哪里。提前致谢

4

5 回答 5

2

wp_redirect只有当它是在 Wordpress 中生成输出的第一件事时才会起作用。它通过在输出中设置 http 标头来工作。一旦其他东西产生了一些输出,该方法就不再有效。

在您的情况下,无论您在哪里调用 pluggable.php 中的重定向代码,都会在调用之后发生get_header()

您要么必须在调用标头之前移动此代码,要么使用 javascript 函数来重定向用户。

update您还应该永远不要对未经处理的 $_GET 变量在数据库上运行查询。

于 2012-06-15T05:17:07.517 回答
0

如果您更改bloginfo( 'stylesheet_uri' )print get_stylesheet_directory_uri()and 会发生什么bloginfo( 'pingback_url' ) to print get_bloginfo( 'pingback_url' );?

于 2012-06-16T01:25:36.390 回答
0
$status = apply_filters( 'wp_redirect_status', $status, $location );

    if ( ! $location )
        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);

    return true;
}
endif;
于 2015-03-22T22:07:37.543 回答
0

如果@cpilko 解决方案不起作用(他可能完全正确)但是 -

关于 PHP 文件本身,wordpress 存在一个已知问题。您需要确保在开始<?php标记之前没有空字符/空格/回车符,在结束标记之后没有?>

您需要检查所有主题文件和所有插件。

关于结束标签?> - 您需要确保它存在(是的,一些插件开发人员忽略了这一点)

在这里阅读更多:http: //codex.wordpress.org/Answers-Troubleshooting#Headers_already_sent

在 99% 的情况下 - 这是罪魁祸首。

于 2012-06-15T05:27:04.110 回答
-1

试试 ob_start(); 在根文件 wp_config.php 的顶部

于 2015-12-09T11:21:56.017 回答