スポンサーリンク
以下の警告が発生しました。
この警告は、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が原因なら)解決できます。