Управление сеансами 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


для того, что мне нужно сделать, лучший ответ включает в себя:

  1. чтобы файл cookie для wordpress сохранялся в поддоменах, установите корневой файл Cookie плагин.
  2. 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/


подключение функции с помощью session_start() on wp_loaded Кажется, работает в этом случае.


поместите этот код в wp-config.php в первой строке:

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

ставим этот код в заголовок темы.php в первой строке:

session_start();

затем он будет поддерживать все переменные сессии.


если вы хотите использовать свои собственные значения сеанса,Wordpress поддерживает его.

Вам нужно добавить следующие строки в верхней части wp-config.php

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

затем добавьте следующую строку в верхней части header.php

session_start();