I am defining $_SESSION['session_test']
from $_POST['reason']
I get from AJAX call.
Inside of this function, $_SESSION['session_test']
does get defined, and I get desired echo
result.
add_action('wp_ajax_return_reason', array( __CLASS__ , 'select_return_reason'));
static function select_return_reason() {
$_SESSION['session_test'] = $_POST['reason'];
echo "REASON: " . $_SESSION['session_test'];
echo "<br>";
wp_die();
}
But, when I refresh page and try to echo $_SESSION['session_test']
in some other function below this one, it's empty - I get NULL.
add_action('woocommerce_after_cart_table', array( __CLASS__ , 'display_returned_items'));
static function display_returned_items() {
echo "Testing: " . $_SESSION['session_test'];
}
Why $_SESSION['session_test']
value is available/defined only inside function which is executed by AJAX?
My session_start();
is on the top of the php file, right after the <?php
opening tag.
Please let me know if I should provide more info. Thanks.
I am defining $_SESSION['session_test']
from $_POST['reason']
I get from AJAX call.
Inside of this function, $_SESSION['session_test']
does get defined, and I get desired echo
result.
add_action('wp_ajax_return_reason', array( __CLASS__ , 'select_return_reason'));
static function select_return_reason() {
$_SESSION['session_test'] = $_POST['reason'];
echo "REASON: " . $_SESSION['session_test'];
echo "<br>";
wp_die();
}
But, when I refresh page and try to echo $_SESSION['session_test']
in some other function below this one, it's empty - I get NULL.
add_action('woocommerce_after_cart_table', array( __CLASS__ , 'display_returned_items'));
static function display_returned_items() {
echo "Testing: " . $_SESSION['session_test'];
}
Why $_SESSION['session_test']
value is available/defined only inside function which is executed by AJAX?
My session_start();
is on the top of the php file, right after the <?php
opening tag.
Please let me know if I should provide more info. Thanks.
Share Improve this question asked Nov 12, 2018 at 10:51 Tahi ReuTahi Reu 3081 silver badge14 bronze badges1 Answer
Reset to default 1Wrapping this line inside if
statement solved the problem:
if(!isset($_SESSION['session_test'])) {
$_SESSION['session_test'] = $_POST['reason'];
}
I thought select_return_reason(){...}
function which is holding this line was executing only by AJAX, not on each page load.