web-dev-qa-db-fra.com

Comment stocker et recevoir des variables dans WP sessions?

J'ai un formulaire avec des cases à cocher et des sélections de boîtes de saisie et il montre ce que l'utilisateur veut via un appel ajax. Le problème est que lorsque l'utilisateur clique sur l'élément et que la page de détail est affichée, elle décide ensuite de revenir à la page précédente et de sélectionner à nouveau son choix précédent.

Je voudrais que WP stocke toutes les options de la session lorsque l'utilisateur clique sur le bouton de la page de détail et enregistre les informations réelles dans la session. Ensuite, lorsqu'il reviendra sur la page, les valeurs seront vérifiées. sessions et définir si on en trouve.

Cela pourrait-il être fait dans WP?

Si oui comment?

Simplifions à l'excès et disons que nous avons quelque chose comme ceci dans notre formulaire:

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

Je n'utilise pas le bouton d'envoi dans mon formulaire, il est géré via AJAX lors du changement d'entrée.

Et dans mes résultats, j'obtiens un lien vers la page de détail via ajax:

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

Toute idée de comment puis-je stocker mes valeurs dans Session et les appeler lorsque je revisite/recharge/retourne dans le navigateur?

Je dois être capable de lire la session et de l’utiliser via? Javascript? et déclencher ma fonction de recherche via ajax qui fonctionne déjà bien.

Je dois juste stocker (probablement avant d’aller dans $ link in href ou par le bouton de détail et lire et envoyer les variables de session (si elles existent).

27
Derfder

Les sessions ne sont pas activées par défaut dans wordpress. Si vous souhaitez activer les sessions php, ajoutez ceci au début de votre functions.php:

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

Vous pouvez maintenant utiliser $_SESSION['your-var'] = 'your-value'; pour définir une variable de session. Jetez un coup d’œil à la documentation PHP sur les sessions .



Mise à jour:

Il y avait une deuxième réponse, qui, dans mon esprit, avait aussi une valeur - malheureusement, elle a été supprimée, je rajoute les informations ici. La réponse faisait référence à WP Session Manager à un plugin écrit par @eamann comme solution alternative.
J'ai lu des informations sur le plug-in, mais je ne les ai jamais utilisées car - jusqu'à présent - je m'en tiens à PHP sessions - je n'ai jamais eu le problème que je ne pouvais pas les utiliser. Ceci est une déclaration/commentaire de l'auteur du plugin lui-même, j'ai découvert quelques avantages possibles.

32
Nicolai

ajoutez ceci à dans votre functions.php

<?php

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

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

Je vais expliquer comment définir une session avec un nom d'utilisateur avec le Native PHP Sessions pour WordPress plugin. Vous pouvez appliquer cette logique à votre problème.

Ajoutez ceci à votre fichier functions.php

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

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

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

  }

$ _POST ["log"] fait référence à la zone de saisie du nom d'utilisateur à partir du formulaire de connexion wordpress. Lorsqu'un utilisateur se connecte, le nom d'utilisateur est stocké dans $ _SESSION ['nom d'utilisateur']. Dans votre cas, vous devez remplacer "log" par les noms de variable de formulaire que vous avez "car_color".

Référence le nom d'utilisateur plus tard dans un autre fichier php par

$username=$_SESSION['username'];
1
embulldogs99

Peut-être qu’il n’ya pas de session habituelle dans Wordpress ... Wordpress connaît le concept d’utilisateur. Vous pouvez gérer les informations relatives à des utilisateurs spécifiques avec les fonctions add_user_meta , update_user_meta , get_user_meta et delete_user_meta .

Si vous avez besoin des informations sauvegardées de cette façon en JavaScript, vous pouvez écrire un petit script PHP qui vomit ce dont vous avez besoin et l'appeler avec Ajax.

0
Philipp Zedler

Sur la page PHP qui reçoit la demande AJAX, définissez $ _SESSION comme ceci.

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

Accède à la variable $ _SESSION

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

Ce tutoriel explique plus en détail la configuration et la suppression des sessions.

0
nu everest