Используем PHP-сессии в WordPress

Используем PHP-сессии в WordPress

Открываем PHP-сессию

Сегодня я хочу рассказать, как использовать сессии PHP в WordPress. В стандартном PHP-приложении сессия начинается после вызова возможности session_start, запущенной в начале PHP-скрипта. Вам необходимо открыть файл header.php используемой темы и добавить туда следующий программный код:

<?php session_start();?><!DOCTYPE html><head>....

Но этот способ сложно назвать самым эффективным. WordPress предоставляет API Actions, к которому можно без труда привязывать собственные возможности. В приведенном далее примере используется как раз этот способ. Добавьте следующий код в самое начало файла functions.php.

  1. Мы воспользуемся событием init, при помощи которого можно запустить PHP-сессию. При первой инициализации WordPress мы добавляем действие, которое вызывает возможность:
add_action('init', 'start_session', 1);
  1. Далее создаем возможность start_session. Обратите внимание, что функцию сначала проверяет, активна ли сессия, и только потом запускает новую сессию с помощью возможности session_id:
function start_session() {if(!session_id()) {session_start();}}

Закрываем PHP-сессию

Функцию session_destroy может очистить сессию PHP. Но когда вызывать эту возможность? Многое зависит от самого приложения. WordPress также предоставляет пару методов реализовать это с помощью API Actions.

  1. В WordPress может потребоваться очистить сессию при выходе посетителя из системы, либо при авторизации нового посетителя на веб-сайте. Для вызова возможности end_session(), которую мы создадим позже, будут использоваться хуки wp_logout и wp_login:
add_action(‘wp_logout’, ‘end_session’);add_action(‘wp_login’, ‘end_session’);
  1. Далее создаем возможность end_session:
function end_session() {session_destroy();}

Принудительное закрытие сессии

Можно использовать собственный хук, чтобы при помощи PHP закрыть сессию в любом фрагменте шаблона. Мы воспользуемся do_action для вызова возможности end_session, которую мы создали выше.

  1. В файл functions.php необходимо добавить следующий программный код:
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 основываются на состояниях. Сессии хранятся на сервере и обрабатываются им же. Маршрутизация каждой сессии до нужного сервера требует более сложной конфигурации, и создает проблемы для посетителей, чьи сессии хранятся на этом сервере.

По функции, информацию о сессиях лучше хранить в браузере. Это сможет сэкономить ресурсы сервера, а также избавиться от ненужного функционала.

Спасибо, что были с нами! Надеюсь, вам пригодится эта статья, и если у вас возникли вопросы, обязательно задайте их в комментариях!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *