Управление сеансами Wordpress
Я размещаю сайт с помощью Wordpress, и я хотел бы вернуться к его сессиям. Но я не нахожу никаких плагинов или даже документации. Любые предложения или ссылки, прежде чем я начну взламывать его?
примечание: Я спрашиваю о том, использует ли WP стандартные сеансы PHP, а не как добавлять сеансы PHP, например, с помощью session_start(). По-видимому, любое государство, которое поддерживает WP, осуществляется другими средствами. Поэтому, если я хочу использовать PHP-сессии, мне нужно добавить и поддерживать его полностью, используя методы, подобные тем, что в потоке.
спасибо всем!
9 ответов
WordPress, похоже, не вызывает session_start()
потому что он хочет быть без гражданства
и если register_globals
определяется, он автоматически уничтожает ваш $_SESSION
Это очень плохая идея, чтобы изменить WP Core файлы для возможности использования сеансов. Лучший способ, который я нашел, - это вызвать session_start()
С init
крюк действий.
function kana_init_session() {
session_start();
}
add_action('init', 'kana_init_session', 1);
вы можете поместить его в functions.php
файл вашей темы.
подробную статью можно найти здесь:http://www.kanasolution.com/2011/01/session-variable-in-wordpress/
рассмотрите возможность использования переходный API WordPress
значения, сохраненные с помощью переходного API, видны всем пользователям, а не только текущему пользователю, в зависимости от уникального идентификатора, используемого для извлечения переходного процесса, вы можете назначить каждому пользователю уникальный идентификатор, по существу вызывающий переходный процесс вести себя очень похоже на сеанс.
дополнительные соображения:
в зависимости от настройки пользователей с помощью кэша объектов, так далее., переходные могут не всегда храниться в БД (например, memcached), используя переходные процессы для сеансы могут означать, что данные могут стать громоздкими и заполнить память быстро (при использовании memcached).
кроме того, кажется, что WP не делает автоматическую сборку мусора для переходной процесс: https://wordpress.stackexchange.com/questions/6602/are-transients-garbage-collected
для того, что мне нужно сделать, лучший ответ включает в себя:
- чтобы файл cookie для wordpress сохранялся в поддоменах, установите корневой файл Cookie плагин.
- sub1.domain.com имеет wordpress;sub2.domain.com это другой сайт. С другого сайта (sub2), я читаю куки, чтобы определить, кто Пользователь и если пользователь вошел в систему.
мои куки, как следует:
[wordpress_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|d0249fced9c323835c5bf7e84ad3ffea
[wordpress_logged_in_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|56e9c19541ecb596a1fa0995da935700
используя PHP, я могу зацикливаться на cookies, анализировать key=>value
пар. Эти печенье дайте мне знать, что [mshaffer]
имеет файл cookie, хранящийся на wordpress, а также аутентифицируется как logged_in
. Истечение срока действия cookie 1255298821
.
на sub2, я могу запросить базу данных wordpress и захватить информацию о пользователе:
SELECT * FROM `wp_users` WHERE user_login = 'mshaffer' ...
схватила ид_пользователя, user_email из этого запроса
SELECT * FROM `wp_usermeta` WHERE user_id = '$user_id' ...
захватить много других данных от wp
С этой информацией я могу добавить в свой sub2 переменная сеанса / cookie и делаю то, что я хочу с данными. Я могу определить, вошел ли я в систему, и мое имя пользователя ... что позволит мне собрать много разных данных. Теперь я могу использовать аутентификацию WordPress в моемsub2.domain.com и перенаправить соответственно.
Монте -
{x:
Wordpress, похоже, не использует никаких сеансов.
лучший способ сделать это-использовать крючки действия, которые он предоставляет.
вы проверили решение здесь это может работать здесь и его на легком пути
http://thedigilife.com/wordpress-how-to-set-session-custom-variable-while-login/
поместите этот код в wp-config.php в первой строке:
if (!session_id()) {
session_start();
}
ставим этот код в заголовок темы.php в первой строке:
session_start();
затем он будет поддерживать все переменные сессии.
если вы хотите использовать свои собственные значения сеанса,Wordpress поддерживает его.
Вам нужно добавить следующие строки в верхней части wp-config.php
if (!session_id()) {
session_start();
}
затем добавьте следующую строку в верхней части header.php
session_start();