スポンサーリンク

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

以下の警告が発生しました。

Warning: Cannot modify header information – headers already sent by (output started at *****/wp-content/themes/nuTheme10/functions.php:2) in ******/wp-admin/includes/misc.php on line 1126

 

この警告は、PHPのheader()関数が呼び出されるまえに出力があると生じるそうです。

Webサイトはサーバーにデータを置き、Webブラウザがそれをダウンロードすることで画面に表示しています。

実際には<html>….というHTML本文が送られる前に、サーバーとクライアントで「これからデータ送るからね!」「OK!準備完了!」のような通信を行っていて、常人はこれを全く意識しないのですが、この本文が送られる前の通信をする関数がheader()関数となります。

WordPressの場合、まずfunctions.phpやプラグインの設定などが走り、header()が呼ばれ、それからsingle.phpなどの本文の出力が始まります。

従ってfunctions.phpで何らかの「出力」があったり、そんなことをするプラグインがインストールされると何かにつけてこのWarningが発生するようになります。

PHPの場合、<?php と ?>で囲まれていない内容は全て出力となるため、例えばfunctions.phpが下のようになっていた場合、空行を出力したことになってしまいます。

 

<?php
//ここから
register_sidebar(array(
  'name' => 'frontmenu',
  'id' => 'frontmenu',
  'description' => 'フロントページメニュー',
  'before_widget' => '<div>',
  'after_widget' => '</div>',
  'before_title' => '<h3>',
  'after_title' => '</h3>'
));
?>
                                                    <!-- ◆ここに空行がある -->
<?php
function register_my_menu() {
  register_nav_menu('primary', 'Primary Menu');
}
add_action('after_setup_theme', 'register_my_menu');
?>

 

最も間違いの無い解決策は、ファイルの一番先頭をいきなり<?php ではじめ、最後は ?> で終わり、その間を ?> <?php で区切るようなことはしないことで(functions.phpが原因なら)解決できます。

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: