无法在wordpress中修改标头信息

时间:2012-06-15 05:08:37

标签: wordpress header location

我有一个问题无法在wordpress上修改标题信息 警告:无法修改标头信息 - 已经发送的标头(/home/sixtydev/public_html/voxxydev/wp-content/themes/voxxy/header.php:15中的输出)/ home / sixtydev / public_html / voxxydev / wp-在865行包含/ 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);
}

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

5 个答案:

答案 0 :(得分:2)

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

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

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

您也不应该在未经过类型化的$ _GET变量上对数据库运行update查询。

答案 1 :(得分:0)

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

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

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

关于结束标记?> - 你需要确保它是EXISTS(是的,一些插件开发者省略了它)

在此处阅读更多内容:http://codex.wordpress.org/Answers-Troubleshooting#Headers_already_sent

在99%的案例中 - 这是罪魁祸首。

答案 2 :(得分:0)

如果您将bloginfo( 'stylesheet_uri' )更改为print get_stylesheet_directory_uri(),那会怎样? bloginfo( 'pingback_url' ) to print get_bloginfo( 'pingback_url' ); ?

答案 3 :(得分: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;

答案 4 :(得分:-1)

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