Сегодня хотел поделиться реализацией одной интересной штуковины на сайт: отображения индикатора присутствия пользователя на сайте. Хотя он пока не очень популярен, все же можно придумать массу областей, где его можно с пользой применить. Например, показать посетителям, что администратор в сети, и может быстро ответить на вопрос. Соцсети, чаты, формы для комментирования и обратной связи. Это неполный список применения индикатора.

Программирование в первую очередь — размышление, а потом уже написание кода. Поэтому, в начале давайте определимся с алгоритмом реализации поставленной задачи, а потом перейдем к коду.

В WordPress нет встроенной функции для получения данных об авторизации какого-либо другого пользователя (если это не так, поправьте меня). Однако, мы можем узнать вошел ли пользователь под своим логином. Что ж, уже не мало.  Ведь эти данные мы можем затем сохранить, и передать эти сведения другим посетителям сайта. Для этого, давайте создадим метаполе каждому юзеру. Назовем его logged. При входе на сайт, запишем в него значение true, то есть, пользователь на сайте, а при выходе false. Для отображения индикатора будем получать значения этого поля. Попробуем это сделать?

Создаем метаполе logged

Чтобы проверить смену значения поля, отобразим его на странице пользователя. Следующий код нужно разместить в файл function.php:

Если вы не хотите проверять работоспособность, просто пропустите это шаг. Все же, я рекомендую вам протестировать смену значений в метаполе при работе с формами входа и выхода вашего сайта.

Выводим индикатор во фронтэнде

Создадим условие, при котором будут выводиться тег span с разными классами.

Программируем смену значения метаполя

Создадим проверку авторизован ли текущий пользователь с помощью функции is_user_logged_in. Если пользователь залогинен, определим его id и впишем в созданное метаполе значение true. Кроме того, необходимо заложить основание для замены значения поля на false при выходе. Для этого запустим сессию, в которой сохраним id пользователя. Данные сессии мы удалим, если пользователь выходит. Разместите в файле function.php следующее:

Теперь установим значение мета поля false при выходе с сайта.

Хочется отметить, что данный способ изменения значения метаполя logged я проверял только на стандартной форме входа и выхода с сайта. Кроме того, он не учитывает ситуацию, когда пользователь забыл произвести выход с сайта и просто закрыл вкладку браузера. Учитывая это, предложенный в этой статье способ хорошо подходит скорее отображения присутствия администратора.

Если вы хотите менять состояние индикатора при отсутствии активности пользователя в течении установленного времени, придется обратиться к планировщику, основанному на wp_schedule_event(). Возможно, я разовью эту мысль в другой раз.

Оформление индикатора

Теперь осталось красиво оформить. Давайте сделаем так, чтобы при активном состоянии индикатор был зеленого цвета и пульсировал, а при неактивном состоянии, становился серого цвета. Прописываем стили:

Пример работы индикаторы вы можете увидеть у меня на сайте под меню. На этом, пожалуй все. Если у вас есть предложения, как можно улучшить реализацию данной идеи, пожалуйста, напишите в комментариях.

4 коментариев к записи

    • Всегда пожалуйста. Реализация не из плагина. Если есть похожее решение плагином, было бы интересно взглянуть 🙂

  • Здравствуйте! Решил реализовать это на тестово-учебном сайте. В итоге получилось, что сессия не хочет «уничтожаться». Ну, и вот такое сообщение в форме входа/выхода: Warning: session_destroy(): Trying to destroy uninitialized session in /home/u760442852/public_html/wp-content/themes/n.tech/functions.php on line 127

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