Speichern und Empfangen von Variablen in WP-Sitzungen

28

Ich habe ein Formular mit einigen Kontrollkästchen und Auswahlkästchen für Eingabefelder und es zeigt, was der Benutzer über einen Ajax-Aufruf möchte. Das Problem besteht darin, dass der Benutzer, wenn er auf das Element klickt und die Detailseite angezeigt wird und dann beschließt, zur vorherigen Seite zurückzukehren, erneut klicken und seine vorherige Auswahl treffen muss.

Ich möchte, dass WP alle Optionen in der Sitzung speichert, wenn auf die Schaltfläche auf der Detailseite geklickt wird, und aktuelle Informationen in der Sitzung speichert. Wenn er dann die Seite erneut besucht, werden die Werte in Sitzungen überprüft und gegebenenfalls festgelegt gefunden.

Könnte das in WP gemacht werden?

Wenn ja, wie?

Vereinfachen wir das und sagen wir, wir haben so etwas in unserer Form:

<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" />

Ich benutze in meinem Formular nicht die Schaltfläche "Senden", sie wird bei Eingabeänderung über AJAX verarbeitet.

Und in meinen Ergebnissen bekomme ich via Ajax einen Link zur Detailseite:

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

Hast du eine Idee, wie ich meine Werte in Session speichern und beim erneuten Aufrufen / Laden / Zurück-Button im Browser aufrufen kann?

Ich muss in der Lage sein, das in der Sitzung gespeicherte Material zu lesen und es über? Javascript? Zu verwenden. und über ajax meine suchfunktion auslösen, die schon gut funktioniert.

Ich muss nur speichern (wahrscheinlich bevor ich zu $ ​​link in href von by detail button gehe und Sitzungsvariablen lese und sende (falls vorhanden).

Derfder
quelle
Wenn die Antwort für Sie hilfreich war, können Sie sie akzeptieren. Siehe » Was soll ich tun, wenn jemand meine Frage beantwortet? «Und / oder» Warum ist die Abstimmung wichtig? «Weitere Informationen zum WordPress-Entwicklungsmodell finden Sie in der Hilfe .
Nicolai
Ich denke, der folgende Link wird Ihnen helfen. wordpress.stackexchange.com/questions/105453/…
Vivekanand Saraswati

Antworten:

32

Sitzungen sind in WordPress nicht standardmäßig aktiviert. Wenn Sie PHP-Sitzungen aktivieren möchten, fügen Sie dies zu Beginn Ihrer functions.php:

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

Sie können jetzt $_SESSION['your-var'] = 'your-value';eine Sitzungsvariable festlegen. Schauen Sie sich die PHP-Dokumentation zu Sessions an .



Aktualisieren:

Es gab eine zweite Antwort, die meiner Meinung nach auch einen Wert hatte - leider wurde sie gelöscht, ich füge die Informationen hier erneut hinzu. Die Antwort bezog sich auf WP Session Manager, ein Plugin, das von @eamann als alternative Lösung geschrieben wurde.
Ich habe einige Dinge über das Plugin gelesen, es aber nie benutzt, weil ich - bis jetzt - bei PHP-Sitzungen bleibe - nie das Problem hatte, dass ich sie nicht benutzen konnte. Dies ist eine Aussage / ein Kommentar des Plugin-Autors, den ich über einige mögliche Vorteile gefunden habe.

Nicolai
quelle
Darf ich Sie bitten, sich hier eine Frage zu benutzerdefinierten Feldern anzusehen: wordpress.stackexchange.com/questions/265852/… ?
Istiaque Ahmed
1

füge dies in deine functions.php ein

<?php

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

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

Ich werde erklären, wie man eine Benutzersitzung mit dem Native PHP Sessions für WordPress Plugin erstellt. Sie können diese Logik auf Ihr Problem anwenden.

Fügen Sie dies zu Ihrer functions.php-Datei hinzu

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

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

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

  }

$ _POST ['log'] verweist auf das Eingabefeld für den Benutzernamen im WordPress-Anmeldeformular. Wenn sich ein Benutzer anmeldet, wird der Benutzername in $ _SESSION ['Benutzername'] gespeichert. In Ihrem Fall würden Sie "log" in den Namen der Formularvariablen ändern, die Sie "car_color" haben.

Verweisen Sie den Benutzernamen später in einer anderen PHP-Datei durch

$username=$_SESSION['username'];
embulldogs99
quelle
0

Vielleicht gibt es in Wordpress keine üblichen Sitzungen ... Wordpress kennt das Konzept der Benutzer. Sie können Informationen in Bezug auf bestimmte Benutzer mit den Funktionen verwalten add_user_meta, update_user_meta, get_user_meta, und delete_user_meta.

Wenn Sie die so gespeicherten Informationen in JavaScript benötigen, können Sie ein kleines PHP-Skript schreiben, das sich erbricht, was Sie benötigen, und es mit Ajax aufrufen.

Philipp Zedler
quelle
2
Dies ist nur gut, wenn der Benutzer angemeldet ist.
Tim Hallman
0

Stellen Sie auf der PHP-Seite, die die AJAX-Anfrage empfängt, $ _SESSION so ein.

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

Greifen Sie auf die Variable $ _SESSION zu

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

In diesem Tutorial erfahren Sie mehr über das richtige Einrichten und Entsorgen von Sitzungen.

nu everest
quelle