Як зберігати та отримувати змінні в сесіях 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 кнопкою деталей та прочитати та надіслати змінні сеансу (якщо вони існують).


Якщо відповідь вам була корисною, тоді подумайте про її прийняття. Дивіться » Що робити, коли хтось відповість на моє запитання? «Та / або» Чому важливе значення має голосування? «, Більше інформації про модель розвитку WordPress можна отримати в довідковому центрі .
Миколай

Я думаю, що нижче посилання допоможе вам. wordpress.stackexchange.com/questions/105453/…
Vivekanand Saraswati

Відповіді:


32

Сеанси не включені у wordpress за замовчуванням, якщо ви хочете активувати сеанси php, додайте це на початку вашого functions.php:

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

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



Оновлення:

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


Чи можу я попросити вас ознайомитись із спеціальним запитом, пов’язаним із полем тут: wordpress.stackexchange.com/questions/265852/… ?
Істіак Ахмед

1

додайте це у ваші функції.php

<?php

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

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

1

Я поясню, як встановити сеанс імені користувача за допомогою плагіна Native PHP Sessions для WordPress . Ви можете застосувати цю логіку до своєї проблеми.

Додайте це до файлу function.php

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

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

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

  }

$ _POST ['log'] посилається на поле введення імені користувача з форми входу в wordpress. Коли користувач входить у систему, ім'я користувача зберігається в $ _SESSION ['ім'я користувача']. У вашому випадку ви б змінили "log" на назви змінних форм, які у вас є "car_color".

Пізніше посилайтеся на ім’я користувача в іншому файлі php

$username=$_SESSION['username'];

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.';
}

У цьому підручнику детальніше описується правильне налаштування та розпорядження сеансами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.