PHPセッションの私の理解は、彼らが私たちにサイト上のページ間の変数を追跡させることです。しかし、私はWordPressで何か違うものを見ているようです。私は自分のfunctions.phpファイルに以下のフックを持っている:これは価格設定のページであればWordPressのPHPセッション
add_action('wp', 'sa_clear_session_email');
function sa_clear_session_email() {
if (! is_page('Pricing ') )
return;
$ret = session_start();
if ($ret) {
$s_id = session_id();
trace("M20D:Pricing page. Started session $s_id");
}
else {
trace("M20E:Pricing page. Unable to start session");
}
unset($_SESSION['user_email']);
ので、コードがセッションを開き、「USER_EMAIL」変数をクリアします。 functions.phpでも
は
add_action('wp', 'woa_add_membership_auto_on_checkout');
function woa_add_membership_auto_on_checkout() {
if (! is_page('checkout') || ! is_checkout()) {// is_checkout() returns true if viewing the checkout page
return;
}
$ret = session_start();
if ($ret) {
$s_id = session_id();
trace("M9F:Started session $s_id");
}
else {
trace("M9F:Unable to start session");
}
$email = $_SESSION['user_email'];
このコードはチェックアウトページを待ち、その後、最初のコードで開いたセッションを使用しようとしています。 私は最初のフック関数で 'user_email'をクリアしても、 それは2番目にクリアされていません。その理由はsession_idが最初のコードになるということです。 は私が入るsession_idではありません2番目のコード
ここで何が起こっているのか分かりますか?
ありがとうございました。
通常、 '' init''アクションはセッションを開始するために使用されます。それでも問題が解決しない場合は、サーバーがセッションを正しく保存していない可能性があります。 – ub3rst4r
if(!is_page( 'Pricing'))とif(!is_page( 'checkout')||!is_checkout()){両方とも正常に動作しており、ループが関数内に入りますか? –