Comment stocker et recevoir des variables dans des sessions WP?

28

J'ai un formulaire avec des cases à cocher et des boîtes de sélection 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 s'affiche, puis décide de revenir à la page précédente, il doit cliquer et sélectionner à nouveau son choix précédent.

Je voudrais que WP enregistre toutes les options dans la session lorsque vous cliquez sur le bouton de la page de détails et enregistre les informations réelles dans la session, puis lorsqu'il reviendra sur la page, les valeurs seront vérifiées dans les sessions et définies le cas échéant. a trouvé.

Cela pourrait-il être fait dans WP?

Si oui, comment?

Simplifions cela et disons que nous avons quelque chose comme ça dans notre forme:

<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 soumettre dans mon formulaire, il est géré via AJAX lors du changement d'entrée.

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

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

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

J'ai besoin de pouvoir lire le contenu stocké de la session et l'utiliser via? Javascript? et déclencher ma recherche via ajax qui fonctionne déjà bien.

J'ai juste besoin de stocker (probablement avant d'aller sur $ link dans le bouton href of by detail et de lire et envoyer des variables de session (si elles existent).

Derfder
la source
Si la réponse vous a été utile, envisagez de l'accepter. Voir » Que dois-je faire lorsque quelqu'un répond à ma question? «Et / ou» Pourquoi le vote est-il important? «, Plus d'informations sur le modèle de développement WordPress sont disponibles dans le centre d'aide .
Nicolai
Je pense que le lien ci-dessous vous aidera. wordpress.stackexchange.com/questions/105453/…
Vivekanand Saraswati

Réponses:

32

Les sessions ne sont pas activées dans wordpress par défaut, 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 œil à la documentation PHP sur les sessions .



Mise à jour:

Il y avait une deuxième réponse, qui, à mon avis, 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 certaines choses sur le plugin, mais je ne l'ai jamais utilisé parce que - jusqu'à présent - je m'en tiens aux sessions PHP - je n'ai jamais eu le problème de ne pas pouvoir les utiliser. Ceci est une déclaration / commentaire de l'auteur du plugin lui-même que j'ai trouvé sur certains avantages possibles.

Nicolai
la source
puis-je vous demander de jeter un œil à une question liée au champ personnalisé ici: wordpress.stackexchange.com/questions/265852/… ?
Istiaque Ahmed
1

ajoutez ceci à dans votre functions.php

<?php

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

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

Je vais vous expliquer comment définir une session de nom d'utilisateur avec le plugin Native PHP Sessions pour WordPress . 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 variables de formulaire que vous avez «car_color».

Référencez le nom d'utilisateur plus tard dans un autre fichier php en

$username=$_SESSION['username'];
embulldogs99
la source
0

Peut-être qu'il n'y a pas de sessions habituelles dans Wordpress ... de toute façon, Wordpress connaît le concept des utilisateurs. Vous pouvez gérer les informations relatives à des utilisateurs spécifiques aux fonctions add_user_meta, update_user_meta, get_user_meta, et delete_user_meta.

Si vous avez besoin des informations enregistrées de cette manière en JavaScript, vous pouvez écrire un petit script PHP qui vomit ce dont vous avez besoin et l'appeler avec Ajax.

Philipp Zedler
la source
2
Ce n'est bon que si l'utilisateur est connecté.
Tim Hallman
0

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éder à la variable $ _SESSION

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

Ce didacticiel aborde plus en détail la configuration et l'élimination correctes des sessions.

nu everest
la source