WordPressでSESSION変数を使用する
使用開始 session_start()
セッション変数を使用するには session_start() を実行する必要があります。しかしこれはどこで実行してもよいわけではなく、サーバー側からのなんらかの送信が行われる前に実行する必要があります。また、既に実行済みの場合の多重実行もエラーとなります。
ネット情報などでは「init」アクションフックで実行するのが良いという情報が多いです。しかしこのタイミングで実行すると、WordPressのサイトヘルスステータスで問題が報告されるようです。
これを回避するには「template_redirect」アクションフックで実行するのが良いということです。
WordPress でセッションを使うときに色々怒られた件
以下のコードをfunctions.phpにコピペしてください。
▼ PHP
1 2 3 4 5 6 7 8 |
function init_session_start() { // セッションが開始されていなければここで開始 if( session_status() !== PHP_SESSION_ACTIVE ) { session_start(); } } add_action( 'template_redirect', 'init_session_start' ); |
生成
セッション変数を使用するにはセッション変数を生成する必要があります。
以下のコードを使用する前に実行してください。
▼ PHP
1 2 3 |
if (!isset($_SESSION['value'])){ $_SESSION['value'] = 1; } |
$_SESSION[‘value’]が存在しない場合に、$_SESSION[‘value’]を生成して内容を1として初期化しています。
使用
以降は必要に応じて内容を書き換え・以前のページでの情報保存・状態管理などに利用できます。
▼ PHP
1 2 3 |
$_SESSION['value'] ++; if($_SESSION['value'] > 5){ } |
破棄
ログアウトなどでそれまで使用していたセッション変数を破棄したい場合は以下のように処理します。
▼ PHP
1 2 |
unset($_SESSION['value']); // あるいは $_SESSION = array(); ←すべてのセッション変数が削除される session_destroy(); |
(※ 当ページは社内技術資料としての位置付けですので読みにくいこともあるかもしれませんが、一般の方の課題解決に役立てれば幸いです。)
弊社サイトご案内
弊社ではデザイン会社様やウェブサイト制作会社様との提携・協業を随時お願いしております。