Come archiviare e ricevere variabili nelle sessioni WP?


28

Ho un modulo con alcune caselle di controllo e caselle di selezione e mostra ciò che l'utente desidera tramite una chiamata Ajax. Il problema è che quando l'utente fa clic sull'elemento e viene visualizzata la pagina dei dettagli, quindi decide di tornare alla pagina precedente, deve fare clic e selezionare nuovamente la sua scelta precedente.

Vorrei fare in modo che WP memorizzi tutte le opzioni nella sessione quando si fa clic sul pulsante nella pagina dei dettagli e si salvano le informazioni effettive nella sessione, quindi quando visita di nuovo la pagina i valori verranno controllati nelle sessioni e impostati se ce ne sono trovato.

Potrebbe essere fatto in WP?

Se si, come?

Semplificiamo troppo e diciamo che abbiamo qualcosa del genere nella nostra forma:

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

Non utilizzo il pulsante di invio nel mio modulo, è gestito tramite AJAX al cambio di input.

E nei miei risultati, tramite Ajax, ho un link alla pagina dei dettagli:

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

Qualche idea su come posso memorizzare i miei valori in Sessione e chiamarli durante la rivisitazione / ricarica / pulsante Indietro nel browser?

Devo essere in grado di leggere le cose memorizzate nella sessione e usarle tramite? Javascript? e attiva la mia ricerca tramite ajax che sta già funzionando bene.

Ho solo bisogno di archiviare (probabilmente prima di andare a $ link in href dal pulsante dettaglio e leggere e inviare variabili di sessione (se esistono).


Se la risposta ti è stata utile, considera di accettarla. Vedi » Cosa devo fare quando qualcuno risponde alla mia domanda? «E / o» Perché è importante votare? «, Ulteriori informazioni sul modello di sviluppo di WordPress sono disponibili presso il centro assistenza .
Nicolai,

Risposte:


32

Le sessioni non sono abilitate in wordpress per impostazione predefinita, se vuoi attivare sessioni php aggiungi questo all'inizio di functions.php:

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

Ora puoi usare $_SESSION['your-var'] = 'your-value';per impostare una variabile di sessione. Dai un'occhiata alla documentazione di PHP sulle sessioni .



Aggiornare:

C'era una seconda risposta, che, nella mia mente, aveva anche un valore - sfortunatamente è stata cancellata, sto aggiungendo nuovamente le informazioni qui. La risposta si riferiva a WP Session Manager, un plugin scritto da @eamann come soluzione alternativa.
Ho letto alcune cose sul plugin, ma non l'ho mai usato perché - finora - sto seguendo le sessioni PHP - non ho mai avuto il problema di non poterle usare. Questa è una dichiarazione / commento dell'autore stesso del plugin che ho trovato su alcuni possibili vantaggi.


posso chiederti di dare un'occhiata a una domanda relativa al campo personalizzato qui: wordpress.stackexchange.com/questions/265852/… ?
Istiaque Ahmed,

1

aggiungilo a nelle tue function.php

<?php

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

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

1

Spiegherò come impostare una sessione con nome utente con il plug-in Sessioni PHP native per WordPress . Puoi applicare questa logica al tuo problema.

Aggiungi questo al tuo file Functions.php

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

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

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

  }

$ _POST ['log'] fa riferimento alla casella di input del nome utente dal modulo di login di wordpress. Quando un utente accede, il nome utente viene archiviato in $ _SESSION ['nome utente']. Nel tuo caso, cambierai 'log' con i nomi delle variabili del modulo che hai 'car_color'.

Fai riferimento al nome utente in seguito in qualche altro file php di

$username=$_SESSION['username'];

0

Forse non ci sono sessioni abituali in Wordpress ... comunque, Wordpress conosce il concetto di utenti. È possibile gestire le informazioni relative a utenti specifici con le funzioni add_user_meta, update_user_meta, get_user_meta, e delete_user_meta.

Se hai bisogno delle informazioni salvate in questo modo in JavaScript, puoi scrivere un piccolo script PHP che vomita quello che ti serve e chiamarlo con Ajax.


2
Questo è utile solo se l'utente ha effettuato l'accesso.
Tim Hallman,

0

Nella pagina PHP che riceve la richiesta AJAX, impostare $ _SESSION in questo modo.

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

Accedi alla variabile $ _SESSION

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

Questo tutorial fornisce ulteriori dettagli sulla corretta configurazione e eliminazione delle sessioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.