Как хранить и получать переменные в сессиях WP?

28

У меня есть форма с некоторыми флажками и полями выбора, и она показывает, что пользователь хочет через вызов 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 ?>">

Любая идея, как я могу сохранить свои значения в сеансе и вызвать их при повторном просмотре / перезагрузке / кнопку возврата в браузере?

Мне нужно, чтобы иметь возможность читать сессионный материал и использовать его через? Javascript? и активировать функцию поиска через ajax, которая уже работает хорошо.

Мне просто нужно сохранить (вероятно, перед переходом к $ link в href кнопки «Подробности» и прочитать и отправить переменные сеанса (если они существуют).

Derfder
источник
Если ответ был полезен для вас, подумайте о его принятии. Смотрите » Что мне делать, когда кто-то отвечает на мой вопрос? «И / или» Почему важно голосование? «Более подробную информацию о модели разработки WordPress можно получить в справочном центре .
Николай
Я думаю, что ниже ссылка поможет вам. wordpress.stackexchange.com/questions/105453/…
Вивекананд Сарасвати

Ответы:

32

Сессии не включены в WordPress по умолчанию, если вы хотите активировать PHP-сессии, добавьте это в начале вашего functions.php:

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

Теперь вы можете использовать $_SESSION['your-var'] = 'your-value';для установки переменной сеанса. Взгляните на документацию PHP по сессиям .



Обновить:

Был второй ответ, который, на мой взгляд, тоже имел значение - к сожалению, он был удален, я снова добавляю информацию сюда. Ответ был на WP Session Manager, плагин, написанный @eamann, в качестве альтернативного решения.
Я читал некоторые вещи о плагине, но никогда не использовал его, потому что - пока - я придерживаюсь сессий PHP - никогда не было проблемы, что я не мог их использовать. Это заявление / комментарий самого автора плагина о некоторых возможных преимуществах.

Nicolai
источник
могу ли я попросить вас взглянуть на вопрос, связанный с пользовательским полем, здесь: wordpress.stackexchange.com/questions/265852/… ?
Истак Ахмед
1

добавьте это в вашем functions.php

<?php

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

add_action('init', 'tatwerat_startSession', 1);
Абдо-Host
источник
1

Я объясню, как установить сеанс имени пользователя с плагином Native PHP Sessions for 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'];
embulldogs99
источник
0

Может быть, в Wordpress нет обычных сессий ... в любом случае, Wordpress знает концепцию пользователей. Вы можете управлять информацией , связанной с конкретными пользователями с функциями add_user_meta, update_user_meta, get_user_meta, и delete_user_meta.

Если вам нужна информация, сохраненная таким образом в JavaScript, вы можете написать небольшой скрипт PHP, который вырвет то, что вам нужно, и вызвать его с помощью Ajax.

Филипп Зедлер
источник
2
Это хорошо только в том случае, если пользователь вошел в систему.
Тим Холлман
0

На странице 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.';
}

В этом уроке более подробно рассказывается о правильной настройке и использовании сессий.

Ну Эверест
источник