WPセッションで変数を保存および受信する方法


28

私はいくつかのチェックボックスと入力ボックスselectboxesを持つフォームを持っています、そしてそれはユーザーがajax呼び出しを介して欲しいものを示しています。問題は、ユーザーがアイテムをクリックして詳細ページが表示された後、前のページに戻り、クリックして前の選択を再度選択する必要がある場合です。

詳細ページのボタンがクリックされたときにセッションのすべてのオプションを保存し、セッションの実際の情報を保存してから、ページに再びアクセスするとセッションで値がチェックされ、設定されている場合はWPに設定したい見つかりました。

それはWPで行うことができますか?

はいの場合、どのように?

それを単純化しすぎて、フォームに次のようなものがあるとしましょう。

<input class="car_color" type="checkbox" name="car_color" value="1" />
<input class="car_color" type="checkbox" name="car_color" value="2" />
<input class="car_color" type="checkbox" name="car_color" value="8" />
<input class="car_color" type="checkbox" name="car_color" value="4" />
<input class="car_color" type="checkbox" name="car_color" value="6" />

フォームで送信ボタンを使用せず、入力の変更時にAJAX経由で処理されます。

そして、私の結果にはajax経由で取得し、詳細ページへのリンクがあります:

<a class="detail-info-link" href="<?php echo $url ?>">

セッションに値を保存し、ブラウザのボタンを再表示/再読み込み/戻るときに呼び出す方法はありますか?

セッションに保存されたものを読み取り、「Javascript」経由で使用できるようにする必要があります。そして、すでに機能しているajaxを介して検索機能をトリガーします。

保存するだけです(おそらく、詳細ボタンでhrefの$ linkに移動し、セッション変数が存在する場合)。


答えがあなたにとって有益だったら、それを受け入れることを検討してください。参照» 誰かが私の質問に答えたらどうしたらいいですか?«および/または» なぜ投票が重要なのですか?«、WordPress開発モデルの詳細については、ヘルプセンターをご覧ください。
ニコライ

以下のリンクがあなたを助けると思います。wordpress.stackexchange.com/questions/105453/...
Vivekanandサラスワティ

回答:


32

デフォルトでは、セッションはワードプレスで有効になっていません。PHPセッションを有効にしたい場合は、これをの先頭に追加しますfunctions.php

if (!session_id()) {
    session_start();
}

これで$_SESSION['your-var'] = 'your-value';、セッション変数を設定できます。見てみましょうセッションのPHPのマニュアルを



更新:

2番目の答えがありましたが、私の考えでは値もありました-残念ながら削除されました。ここで情報を再追加しています。答えは、WP Session Managerを代替ソリューションとして@eamannによって作成されたプラグインに言及することでした。
プラグインに関するいくつかのことを読みましたが、使用しませんでした-今のところ-私はPHPセッションにこだわっています-それらを使用できないという問題がなかったからです。これは、プラグイン作成者自身による声明/コメントであり、考えられるいくつかの利点について発見しました。


ここでカスタムフィールド関連の質問をご覧ください:wordpress.stackexchange.com/questions/265852/…
イスティアケアーメド

1

functions.phpでこれを追加します

<?php

function tatwerat_startSession() {
    if(!session_id()) {
        session_start();
    }
}

add_action('init', 'tatwerat_startSession', 1);

1

WordPressプラグインのネイティブPHPセッションでユーザー名セッションを設定する方法を説明します。このロジックを問題に適用できます。

これをfunctions.phpファイルに追加します

if (!session_id()) {
    session_start();
}

  if ( isset( $_POST['wp-submit'] ) ){

    $_SESSION['username']=$_POST['log'];

  }

$ _POST ['log']は、wordpressログインフォームのユーザー名入力ボックスを参照しています。ユーザーがログインすると、ユーザー名は$ _SESSION ['username']に保存されます。あなたの場合、「log」を「car_color」のフォーム変数名に変更します。

後で他のphpファイルでユーザー名を参照する

$username=$_SESSION['username'];

0

Wordpressには通常のセッションはないかもしれません...とにかく、Wordpressはユーザーの概念を知っています。あなたは機能を特定のユーザーに関連する情報を管理することができadd_user_metaupdate_user_metaget_user_meta、とdelete_user_meta

この方法でJavaScriptに保存された情報が必要な場合は、必要なものを吐き出す小さなPHPスクリプトを作成し、Ajaxで呼び出すことができます。


2
ユーザーがログインしている場合、これが唯一の良いです。
ティム・ホールマン

0

AJAXリクエストを受信するPHPページで、このように$ _SESSIONを設定します。

$car_color = <user selected form input data>;
$_SESSION['car_color'] = $car_color;

$ _SESSION変数にアクセスします

if(isset($_SESSION['car_color'])) {
    $value = $_SESSION['car_color'];
} else {
    $value = 'Please select a car color.';
}

このチュートリアルでは、セッションの適切なセットアップと破棄について詳しく説明します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.