Відкриваємо PHP-сесію
Сьогодні я хочу розповісти, як використовувати сесії PHP в WordPress. У стандартному PHP-додатку сесія починається після виклику функції session_start, запущеної на початку PHP-скрипта. Вам потрібно відкрити файл header.php теми і додати туди наступний код:
….
Але цей метод складно назвати найефективнішим. WordPress пропонує API Actions, до якого можна прив’язувати власні функції. У наведеному далі прикладі використовується саме цей метод. Додайте наступний код в початок файлу functions.php.
add_action(‘init’, ‘start_session’, 1);
function start_session() {
if(!session_id()) {
session_start();
}
}
Закриваємо PHP-сесію
Функція session_destroy дозволяє очистити сесію PHP. Але коли саме викликати цю функцію? Багато чого залежить від самого додатка. WordPress також пропонує кілька способів реалізувати це за допомогою API Actions.
add_action(‘wp_logout’, ‘end_session’);
add_action(‘wp_login’, ‘end_session’);
function end_session() {
session_destroy ();
}
Примусове закриття сесії
Можна використовувати власний хук, щоб з допомогою PHP закрити сесію в будь-якому фрагменті шаблону. Ми скористаємося do_action для виклику функції end_session, яку ми створили вище.
add_action(‘end_session_action’, ‘end_session’);
Якщо ви все зробили правильно, то самий верх вашого файлу functions.php буде виглядати наступним чином:
add_action(‘init’, ‘start_session’, 1);
function start_session() {
if(!session_id()) {
session_start();
}
add_action(‘wp_logout’, ‘end_session’);
add_action(‘wp_login’, ‘end_session’);
add_action(‘end_session_action’, ‘end_session’);
function end_session() {
session_destroy ();
}
Тепер потрібно додати глобальну змінну $_SESSION, якою можна скористатися в будь-який момент при роботі з додатком. Змінна є масивом, і нижче наведено приклад додавання даних в масив сесії:
$foo = ‘Foo Data’;
$_SESSION[‘foo’] = $foo;
Що потрібно врахувати:
Якщо ви займаєтеся розробкою масштабованого сайту, то можливо вам і не доведеться використовувати ці сесії. HTTP – це протокол без запам’ятовування станів, сесії PHP ґрунтуються на станах. Сесії зберігаються на сервері і обробляються. Маршрутизація кожної сесії до потрібного сервера вимагає більш складної конфігурації, і створює проблеми для користувачів, чиї сесії зберігаються на цьому сервері.
По можливості, інформацію про сесіях краще зберігати у браузері. Це дозволить заощадити ресурси сервера, а також позбавитися від непотрібного функціоналу.
Спасибі, що були з нами! Сподіваюся, вам знадобиться ця стаття, і якщо у вас виникли питання, обов’язково задайте їх у коментарях!
Переклад статті «Using PHP Sessions in WordPress» був підготовлений дружною командою проекту Сайтостроение від А до Я.