【wordpress】session_start()でエラーが発生する場合の対処方法

【wordpress】session_start()でエラーが発生する場合の対処方法

こんにちは。
今回は、wordpressでのトラブルシューティングです。
まず、具体的には以下のようなエラーメッセージが出た場合です。
「Warning: session_start(): Cannot send session cache limiter – headers already sent …」

これはphpによる警告であり、
session_start()より前にhtmlの記述がある場合に表示されるメッセージです。
なので、単純にsession_start()をソースコードの先頭に書くなどすれば基本的に解決はできるはずです。
しかし、wordpressで構築されているwebサイトの場合はそう簡単にはいきません。
wordpressで構築している場合、
プラグインの読み込みなどで気づかないところでhtmlの記述が含まれている場合が多いからです。
かといって、どこからhtmlの記述がされているかを追うのは、
効率が悪く、現実的に難しい部分もあります。
そういう時は、functions.phpをカスタマイズして、
ページが構築され始める最初の時点でsession_start()を実行するようにしましょう。

具体的には、functions.phpに以下のコードを書くだけです。

add_action('init', 'session_start_init');
function session_start_init(){
  session_start();
}


 

session_start()を呼び出す、session_start_init()というファンクションを定義し、
通常プラグインの初期化の時点でそのファンクションを実行します。

注意点としては、すべてのページの読み込み時にsession_start()が実行されることです。
その点に留意し、参考にしていただければと思います。

では。