Как хранить и получать переменные в сессиях WP?
-
-
Если ответ был для вас полезным,подумайте о том,чтобы принять его.См. »[Что мне делать,если кто-то ответит на мой вопрос?] (Http://wordpress.stackexchange.com/help/someone-answers)« и/или »[Почему важно голосование?] (Http://wordpress.stackexchange.com/help/why-vote) «,дополнительная информация о модели [wordpress.se] доступна в [справке].If the answer was helpful to you, then consider accepting it. See »[What should I do when someone answers my question?](http://wordpress.stackexchange.com/help/someone-answers)« and/or »[Why is voting important?](http://wordpress.stackexchange.com/help/why-vote)«, more information about the [wordpress.se] model is available at the [help].
- 0
- 2015-04-29
- Nicolai
-
Думаю,ссылка ниже вам поможет.https://wordpress.stackexchange.com/questions/105453/getting-headers-already-sent-error-from-pluginI think below link will help you. https://wordpress.stackexchange.com/questions/105453/getting-headers-already-sent-error-from-plugin
- 0
- 2018-10-04
- Vivekanand Saraswati
-
6 ответ
- голосов
-
- 2013-10-09
Сеансы не включены в wordpress по умолчанию. Если вы хотите активировать сеансыphp,добавьте это в начало вашего
functions.php
:if (!session_id()) { session_start(); }
Теперь вы можете использовать
$_SESSION['your-var'] = 'your-value';
,чтобы установить переменную сеанса. Ознакомьтесь с документацией PHP по сеансам .
Обновить:
Был второй ответ,который,на мой взгляд,тоже имел значение - к сожалению,он был удален,я повторно добавляю сюда информацию. Ответ относился к WP Session Manager ,плагину,написанному @eamann в качестве альтернативного решения. .
Я читал кое-что о плагине,но никогда не использовал его,потому что - пока - я придерживаюсь сессий PHP - никогда не было проблемы,что я не мог их использовать. Это заявление/комментарий сам автор плагина я узнал о некоторых возможных преимуществах.Sessions aren't enabled in wordpress by default, if you want to activate php sessions add this at the beginning of your
functions.php
:if (!session_id()) { session_start(); }
You now can use
$_SESSION['your-var'] = 'your-value';
to set a session variable. Take a look at the PHP documentation on sessions.
Update:
There was a second answer, which, in my mind, had a value too - unfortunately it got deleted, I'm re-adding the information here. The answer was referring to WP Session Manager a plugin written by @eamann as a alternative solution.
I read some things about the plugin, but never used it because - so far - I'm sticking with PHP sessions - never had the problem that I couldn't use them. This is a statement/comment by the plugin author himself I found about some possible advantages.-
Могу я попросить вас взглянуть на вопрос,связанный с настраиваемым полем,здесь: https://wordpress.stackexchange.com/questions/265852/set-and-unset-the-custom-field-value?may I ask you to have a look at a custom field related question here : https://wordpress.stackexchange.com/questions/265852/set-and-unset-the-custom-field-value ?
- 0
- 2017-05-04
- Istiaque Ahmed
-
- 2017-06-14
добавьте это в свойfunctions.php
<?php function tatwerat_startSession() { if(!session_id()) { session_start(); } } add_action('init', 'tatwerat_startSession', 1);
add this at in your functions.php
<?php function tatwerat_startSession() { if(!session_id()) { session_start(); } } add_action('init', 'tatwerat_startSession', 1);
-
- 2018-08-05
Я объясню,как установить сеанс имени пользователя с помощью подключаемого модуля Собственные сеансы PHP для 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'];
I will explain how to set a username session with the Native PHP Sessions for WordPress plugin. You can apply this logic to your problem.
Add this to your functions.php file
if (!session_id()) { session_start(); } if ( isset( $_POST['wp-submit'] ) ){ $_SESSION['username']=$_POST['log']; }
$_POST['log'] is referencing the username input box from the wordpress login form. When a user logs in, the username is stored to $_SESSION['username']. In your case, you would change 'log' to the form variable names you have 'car_color'.
Reference the username later in some other php file by
$username=$_SESSION['username'];
-
- 2016-08-12
Может быть,в Wordpress нет обычных сессий ... в любом случае Wordpress знает концепцию пользователей.Вы можете управлять информацией,относящейся к конкретным пользователям,с помощью функций
add_user_meta
,update_user_meta
,get_user_meta
иdelete_user_meta
.Если вам нужна информация,сохраненная таким образом в JavaScript,вы можете написать небольшой PHP-скрипт,который вырвет то,что вам нужно,и вызвать его с помощью Ajax.
Maybe there are no usual sessions in Wordpress ... anyway, Wordpress knows the concept of users. You can manage information related to specific users with the the functions
add_user_meta
,update_user_meta
,get_user_meta
, anddelete_user_meta
.If you need the information saved in this way in JavaScript, you can write a little PHP script that vomits what you need, and call it with Ajax.
-
Это хорошо,только если пользователь вошел в систему.This is only good if the user is logged in.
- 2
- 2016-11-10
- Tim Hallman
-
- 2016-12-05
На странице 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.'; }
В этом руководстве более подробно рассказывается о правильной настройке иудаление сеансов.
On the PHP page that receives the AJAX request, set $_SESSION like this.
$car_color = <user selected form input data>; $_SESSION['car_color'] = $car_color;
Access the $_SESSION variable
if(isset($_SESSION['car_color'])) { $value = $_SESSION['car_color']; } else { $value = 'Please select a car color.'; }
This tutorial goes into more detail about proper setup and disposal of sessions.
-
- 2020-08-31
Сначала вы должны запустить сеанс в WordPress,но вы не можете запустить сеанс в WordPress просто так.
Перед началом сеанса вам необходимо проверить,не запускал ли какой-либо плагин сеанс раньше,потому что у вас могут возникнуть непредвиденные проблемы. Для этого вам понадобится небольшой алгоритм.
if (version_compare(PHP_VERSION, '7.0.0', '>=')) { if(function_exists('session_status') && session_status() == PHP_SESSION_NONE) { session_start(apply_filters( 'cf_geoplugin_php7_session_options', array( 'cache_limiter' => 'private_no_expire', 'read_and_close' => false ))); } } else if (version_compare(PHP_VERSION, '5.4.0', '>=') && version_compare(PHP_VERSION, '7.0.0', '<')) { if (function_exists('session_status') && session_status() == PHP_SESSION_NONE) { session_cache_limiter('private_no_expire'); session_start(); } } else { if(session_id() == '') { if(version_compare(PHP_VERSION, '4.0.0', '>=')){ session_cache_limiter('private_no_expire'); } session_start(); } }
Я также добавил сюда поддержку старых версий PHP.
You must first start a session in WordPress but you can't start a session in WordPress just like that.
Before starting sessions, you need to check if some plugin started the session earlier because you may have unexpected problems. So you need a little algorithm for that.
if (version_compare(PHP_VERSION, '7.0.0', '>=')) { if(function_exists('session_status') && session_status() == PHP_SESSION_NONE) { session_start(apply_filters( 'cf_geoplugin_php7_session_options', array( 'cache_limiter' => 'private_no_expire', 'read_and_close' => false ))); } } else if (version_compare(PHP_VERSION, '5.4.0', '>=') && version_compare(PHP_VERSION, '7.0.0', '<')) { if (function_exists('session_status') && session_status() == PHP_SESSION_NONE) { session_cache_limiter('private_no_expire'); session_start(); } } else { if(session_id() == '') { if(version_compare(PHP_VERSION, '4.0.0', '>=')){ session_cache_limiter('private_no_expire'); } session_start(); } }
I've also added support for older PHP versions here.
У меня есть форма с некоторыми флажками и полями выбора,и она показывает,что пользователь хочет,через вызов ajax. Проблема в том,что когда пользователь щелкает элемент и отображается страница сведений,а затем решает вернуться на предыдущую страницу,ему нужно щелкнуть и снова выбрать свой предыдущий выбор.
Я хотел бы,чтобы WP сохранял все параметры сеанса при нажатии кнопки на странице сведений и сохранял фактическую информацию в сеансе,а затем,когда он снова посещает страницу,значения будут проверяться в сеансах и устанавливаться если таковые найдены.
Можно ли это сделать в WP?
Если да,то как?
Давайте упростим это и скажем,что в нашей форме есть что-то вроде этого:
Я не использую кнопку отправки в своей форме,она обрабатывается через AJAX при изменении ввода.
И в моих результатах,полученных через ajax,у меня есть ссылка на страницу с подробностями:
Есть идеи,как я могу сохранить свои значения в сеансе и вызывать их при повторном посещении/перезагрузке/кнопке возврата в браузере?
Мне нужно иметь возможность читать файлы,сохраненные в сеансе,и использовать их через? Javascript? и запустить мою функцию поиска через ajax,который уже хорошо работает.
Мне просто нужно сохранить (возможно,перед тем,как перейти к ссылке $ в href или по кнопке подробностей и прочитать и отправить переменные сеанса (если они существуют).