WordPressで「Warning: Cannot modify header information – headers already sent by」

  • 投稿 : 2012-03-20
  • 更新 : 2013-05-13

WordPressでワーニング

Warning: Cannot modify header information - headers already sent by (output started at /home/users/0/xxxx/web/android.k05.biz/wp-content/themes/journalist/functions.php:8) in /home/users/0/xxxx/web/android.k05.biz/wp-includes/pluggable.php on line 866
プラグインを有効化しようとすると上記のようなワーニングが出ました。ワーニングなので無視してもよいかなと思っていたら、プラグインがちゃんと動作しません。

原因は、PHPの組み込み関数のheader()の前に何か出力していることです。これは明示的にPHPとして出力している以外に、PHPファイルの改行なども影響します。

問題を切り分けるために、標準でついているテンプレートでも問題がないかをみてみてもよいかと思います。


今回の事例の対策

<?php
// WP3 menus
register_nav_menus( array(
 'primary' => __( 'Header Navigation', '' ),
) );
?>

<?php
if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'before_widget' => '',
        'after_widget' => '',
        'before_title' => '<h3>',
        'after_title' => '</h3>',
    ));
?>
7行目の改行をとれば、解決できます。
普通はこのように2つに分けて書いたりしないので今回のようなことは起こりにくいです。

この手のエラーの場合は、指摘されたファイルの改行や空白などに注意してみてください。特にphpのブロックで囲まれている外側の部分です。
スポンサーリンク