2011-09-11 15 views
32

このエラーが発生しました。私はこれを扱うことは考えていません。ヘッダー情報を変更できません - 既に送信されたヘッダー... Wordpress問題

ヘッダー情報を変更することはできません - ヘッダが既に(出力 が /home/ben213/public_html/wp-content/themes/Bendaggers/functions.php:9で開始) によって送ら内の/ home/ben213/public_htmlのライン上の/wp-includes/pluggable.php 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; 

です。何が間違っているようですか? 親切に助けてください...

+0

こんにちはPaul!申し訳ありませんが、英語で翻訳していただけますか?だから、どうすればいいの? –

+0

'pluggable.php'とは何ですか?なぜあなたはそれを持っていますか? HTTPヘッダーを設定しようとするときに 'functions.php'の前にインクルードする必要があり、HTML出力を開始する前に設定する必要があります。 –

+0

ポール、私が知っているのは<?php if(function_exists( 'register_sidebar'))register_sidebar();?>は私のサイドバーをウィジェット化するためのものです。ごめんなさい、申し訳ありません。 –

答えて

77

あなたのテーマは出力(テキスト)をブラウザに出力していますが、何らかの理由で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は、必要に応じて、ユーザーを自分のロジックの一部としてリダイレクトすることができます。

+1

ありがとうございます。それが私の問題を解決しました! – Phaedrus

+1

は完璧に機能します! – Julien

+1

@BenDaggersこの回答に間違いがないかどうかを記入してください。ありがとう。 – hitautodestruct

18

現在のページから別のページにリダイレクトしようとしている場合、条件を指定したり条件を指定したりしない場合は、このコードを使用します。 例:A.php、& B.phpの2つのページがあり、現在はA.phpにあり、ボタンをクリックすると他のページB.phpに行きます。

if(isset($_POST['save_btn'])) 
    { 
     //write some of your code here, if necessary 
     echo'<script> window.location="B.php"; </script> '; 
    } 
関連する問題