web-dev-qa-db-ja.com

で変数を格納して受け取る方法 WP セッション?

私はいくつかのチェックボックスと入力ボックスの選択ボックスを持つフォームを持っていて、それは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 ?>">

どうやったら値をSessionに保存して、ブラウザの/ reloading/backボタンに戻ったときに呼び出すことができるのですか?

セッションに保存されているものを読み、それをJavascriptで利用できるようにする必要があります。そして、すでにうまく機能しているajaxを介して私の検索機能を起動します。

私はただ保存する必要があります(おそらく詳細ボタンでhrefに$ linkする前に)(そしてもしあれば)セッション変数を読んで送ってください。

27
Derfder

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

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

これで$_SESSION['your-var'] = 'your-value';を使ってセッション変数を設定できます。セッションの PHPのドキュメントを見てください



更新:

私の頭の中では、値も持っていた第二の答えがありました - 残念ながらそれは削除されました、私はここで情報を再追加します。その答えは WP Session Manager @eamannが代替ソリューションとして書いたプラグインを参照していました。
私はプラグインについていくつかのことを読んでいますが、PHPセッションにこだわっていて - 使用できないという問題を抱えていなかったので、それを使用しませんでした。これは statement/comment 自分自身による/私はいくつかの可能性のある利点について見つけた。

32
Nicolai

これをfunctions.phpに追加してください。

<?php

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

add_action('init', 'tatwerat_startSession', 1);
1
Abdo-Host

ネイティブPHP WordPressのセッション プラグインを使ってユーザー名セッションを設定する方法を説明します。あなたはこの論理をあなたの問題に適用することができます。

これをあなたの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'];
1
embulldogs99

Wordpressには通常のセッションがないかもしれません…とにかく、Wordpressはユーザーの概念を知っています。 add_user_metaupdate_user_metaget_user_meta 、および delete_user_meta を使用して、特定のユーザーに関する情報を管理できます。

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

0
Philipp Zedler

PHPリクエストを受け取るAJAXページで、$ _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.';
}

このチュートリアル はセッションの適切な設定と処理についてさらに詳しく説明します。

0
nu everest