WordPressと別プログラム間でSESSIONが引き継げない場合の対応方法
2024/02/20
同一サーバ内に自作したプログラムとWordPressを設置しており両者でセッションを引き継ぎたかった。ただ、WordPressのテーマフォルダ内functions.phpへsession_start()を追記する形でも引き継げなかった。以下に対処方法のメモ。
.user.iniファイルが設置されていた
先に原因と対処法を書く。WordPressのディレクトリ直下に.user.iniというファイルが設置されており、ファイル内にsession.save_pathの記述があり、セッションの保存先が定められていた。
自作プログラム内とのセッションの保存先が異なっていた為、引き継げなかったものと思われる。
.user.iniを削除するかsession.save_pathの記述を変更、もしくはコメントアウトで解決する。今回は.user.iniを削除した。
対応方法
通常であればWordPressテーマフォルダ内のfunctions.phpに以下を追記すればセッションの引継ぎを行える。
function init_session_start(){ session_name('hogehoge'); //必要に応じて記述 session_start(); } add_action('init', 'init_session_start', 1);
なぜ.user.iniファイルが設置されたのか
今回の現象が発生したサーバはエックスサーバーだった。比較的よく使用するサーバで、また、同じような構成(自作プログラムとWPの併用)で開発したことも何度かあったが今回の現象は初めてだった。
違う点として今まではWPを手動で設置していた。データベースを作成しWPファイルをFTPでアップロードするという形をとっていた。
しかしながら今回はエックスサーバの契約時点でWPを自動インストールしたものをクライアントからいただいていた為、恐らくは自動インストールした場合.user.iniが入ってくるんじゃないかと思われる。
所感
セッションが引き継げない場合に保存先を疑うという考えを持っていなかったので解決するまで非常に時間がかかった。今後は保存先にも注意する。
関連記事
-
WordPressの5系から搭載されたブロックエディタ(Gutenberg)を元に戻す方法
WordPressを5系にアップデートしたところ記事投稿ページのエディタが大幅に ...
-
WordPressで閲覧者にテーマを変更させるプラグイン(Theme Switcher)
「新規サイトを○○みたいなイメージでWordPressのテーマを見繕って欲しい」 ...
-
WordPressで複数あるクリック広告をランダムで表示させる方法
同じクリック広告をずっと貼っているとクリック単価が下がると聞いた。WordPre ...
-
WordPressのPolylangで言語毎に分岐処理する方法
WordPressで多言語サイトを作成するにあたりPolylangというプラグイ ...
-
WordPressにてACFで設定したカスタムフィールドの値を元に記事を並べ替える方法
WordPressにてAdvanced Custom Fieldsで設定したカス ...