wordpressのセッション管理について
-
いつもお世話になっています。
セッションで意味わからない事象が起きて困っています。
function page_session_start(){ session_start(); // シングル、アーカイブページ以外の所に遷移、またはジャンル一覧ページに遷移した場合、セッションを破棄 if(!is_archive_or_single()){ session_destroy(); } } add_action('init', 'page_session_start');
is_archive_or_single()はシングルページ、アーカイブページの場合はtrue,それ以外のページはfalseになる処理を書いています。
pre_gets_postのフックでセッションの値を変化させています。return $query;の前でvar_dump($_SESSION);をしても値を保持しています。
function session_is_empty_param($param){ $result_param = $param; if($_SESSION[$param] == 1){ $result_param .= CURRENT; }else{ $result_param .= NONE_CURRENT; } return $result_param; }
他にセッションが絡んでいる関数はclassにcurrentを付ける関数になりますが、関係ないと思います。
ここで本題です。
一番上のソースでsession_destroyをコメントアウトにするとセッションが保持されて、コメントを外すとセッションが空になります。
基本的にアーカイブページだけの処理になるため、!is_archive_or_single()はfalseでsession_destroy()は通りません。var_dumpでも常にfalseなのは確認しました。
それなのに、値は保持されず、空になってしまいます。セッションIDは全く同じ物です。
僕の仮説ではどこかでsession_destroyに似たような働きがある関数が呼ばれているのではないか?と考えているのですが、そういった関数はないでしょうか?
もしくはセッションの破棄にsession_destroyは使わないとかでしょうか?
困っています。よろしくお願いいたします。
1件の返信を表示中 - 1 - 1件目 (全1件中)
1件の返信を表示中 - 1 - 1件目 (全1件中)
- トピック「wordpressのセッション管理について」には新たに返信することはできません。