Подтвердить что ты не робот

Управление сеансом Wordpress

Я размещаю сайт, используя Wordpress, и я хотел бы контрейлеровать на его сеансах. Но я не нахожу никаких плагинов или даже документации. Любые предложения или ссылки, прежде чем я начну его взламывать?

Примечание. Я спрашиваю, как и как WP использует стандартные сеансы PHP, а не как добавлять PHP-сессии, например. используя session_start(). По-видимому, любое состояние WP поддерживает, другими способами. Поэтому, если я хочу использовать сеансы PHP, мне нужно полностью добавить и поддерживать его, используя методы, подобные тем, которые есть в потоке.

Спасибо всем!

4b9b3361

Ответ 2

Это очень плохая идея для изменения файлов WP Core для возможности использования сеансов. Лучший способ, который я нашел, - вызвать session_start() из init action hook.

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/

Ответ 3

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

  • Чтобы файл cookie для wordpress сохранялся в субдоменах, установите Root Cookie plugin.
  • sub1.domain.com имеет wordpress; sub2.domain.com - это еще один сайт. На другом сайте (sub2) я прочитал файлы cookie, чтобы определить, кто является пользователем, и если пользователь вошел в систему.

Мои файлы cookie выглядят следующим образом:

[wordpress_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|d0249fced9c323835c5bf7e84ad3ffea
[wordpress_logged_in_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|56e9c19541ecb596a1fa0995da935700

Используя PHP, я могу перебрать куки, проанализировать пары key=>value. Эти файлы cookie сообщают мне, что [mshaffer] имеет cookie, хранящийся в wordpress, а также аутентифицируется как logged_in. Срок действия файла cookie 1255298821.

В sub2 я могу запросить базу данных wordpress и получить информацию о пользователе:

SELECT * FROM `wp_users` WHERE user_login = 'mshaffer' ... захватить user_id, user_email из этого запроса

SELECT * FROM `wp_usermeta` WHERE user_id = '$user_id' ... захватить множество других данных из wp

С помощью этой информации я могу добавить к моей переменной sub2 переменную сеанса /cookie и делать то, что я хочу, с данными. Я могу определить, если я вошел в систему, и мое имя пользователя..., которое позволяет мне захватывать множество разных данных. Теперь я могу использовать аутентификацию WordPress в своем sub2.domain.com и перенаправлять соответственно.

монте

{х:

Ответ 4

Рассмотрите возможность использования WordPress Transient API

Значения, хранящиеся с использованием API Transient, видны для всех пользователей, а не только для текущего пользователя, в зависимости от уникального идентификатора, используемого для получения переходного процесса, вы можете назначить каждому пользователю уникальный идентификатор, по существу, заставляющий переходный процесс вести себя очень похоже на сессии.

Дополнительные соображения:

  • В зависимости от настройки пользователей с кешем объекта и т.д. переходные процессы могут не всегда сохраняются в БД (например, memcached), используя переходные процессы для сессии могут означать, что данные могут получить громоздкие и заполнять память быстро (при использовании memcached).

  • Кроме того, похоже, что WP не делает сборку мусора для переходные процессы: https://wordpress.stackexchange.com/questions/6602/are-transients-garbage-collected

Ответ 5

Wordpress, похоже, не использует никаких сеансов.

Лучший способ сделать это - использовать обработчики действий, которые он предоставляет.

Ответ 6

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

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

Поместите этот код в тему header.php в первой строке:

session_start();

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

Ответ 7

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

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

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

Затем добавьте следующую строку вверху header.php

session_start();

Ответ 9

В этом случае работает работа с функцией session_start() on wp_loaded.