サポート » 使い方全般 » wordpressのセッション管理について

  • test 1234

    (@lifestyledesign7777)


    いつもお世話になっています。

    セッションで意味わからない事象が起きて困っています。

    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のセッション管理について」には新たに返信することはできません。