Я занимаюсь разработкой сайта с использованием Wordpress.
В моей структуре постоянных ссылок указано название записи / страницы. Таким образом, доступ к странице с именем store будет выглядеть следующим образом: www.mysite.com/store/?some=arguments
Во всех моих шаблонах WP я могу вывести все переменные SESSION, используя print_r($_SESSION);
То же самое из файла, вызванного из jQuery.ajax
, выводит только некоторые из переменных SESSION.
Я использовал следующий код, чтобы проверить, одинаковы ли пути для файлов cookie для обоих файлов:
$sessCookie = ini_get('session.cookie_path');
echo 'session.cookie_path: '.$sessCookie;
У меня также есть этот код в моих файлах, чтобы убедиться, что сессия запущена:
if (!session_id())
session_start();
Почему я не могу вывести одинаковые переменные сеанса из шаблона WP и php-файла, вызываемого из jQuery.ajax
?
UPDATE
jQuery.ajax
вызывает jquery.php
файл. В верхней части этого файла он имеет следующий код:
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-blog-header.php');
Этот код запускает functions.php
. В этом файле у меня есть следующий код:
function session_manager() {
if (!session_id())
session_start();
// Get variables in query string
$_SESSION['action'] = (isset($_GET['action']) ? $_GET['action'] : '');
$user_geo_data = get_geoip_record();
$_SESSION['user_geo_location'] = get_object_vars($user_geo_data);
}
Когда functions.php
запускается из jquery.php
, кажется, что session_id()
возвращает false, поэтому я создаю новый сеанс.
Есть ли способ продолжать использовать один и тот же сеанс?
ОБНОВЛЕНИЕ 2
Кажется, что WP config убивает все глобальные переменные при инициализации.
http://wordpress.org/support/topic/wp-blog-headerphp-killing-sessions