В отличие от большинства современных веб-приложений, WordPress не имеет состояния. Если вы собираетесь создать веб-приложение поверх WordPress, вам понадобится какая-то система для поддержки сеансов.
Файлы cookie предоставляют простой, традиционный механизм управления определенными настройками для пользователей, вошедших в интерфейс.
В этой статье мы кратко обсудим файлы cookie, зачем они нужны в WordPress и как веб-мастера могут извлечь из них пользу. Мы также проведем вас через процесс установки, получения и удаления файлов cookie.
Давайте начнем!
Обзор файлов cookie
Файл cookie — это небольшой фрагмент данных, который отправляется веб-сайтом в веб-браузер пользователя. Файл cookie содержит информацию о пользователе, такую как его имя пользователя / пароль, товары, которые он, возможно, добавил в свою корзину на сайтах электронной коммерции, и т. Д. Когда пользователь снова заходит на сайт, файл cookie отправляется обратно браузером и позволяет сайт знает о предыдущей активности пользователя.
Часто файлы cookie являются зашифрованными файлами. Цель файлов cookie — помочь пользователям. Когда сайт, который вы часто посещаете, запоминает ваше имя пользователя и пароль, вам не нужно повторно проходить аутентификацию каждый раз. Когда вы совершаете покупки в Интернете, файлы cookie помогают сайту отображать товары, которые вы с большей вероятностью сможете купить.
Как видите, куки важны для сайта. Мы покажем вам, как вы можете добавить функциональность cookie на ваш сайт WordPress.
Прежде чем мы перейдем к коду, давайте обсудим некоторые предварительные условия:
- В этом уроке мы будем использовать PHP-код.
- Мы будем отправлять куки в
HTTP headers
. - Мы запустим все функции при
init
. - Код должен быть добавлен в файл
function.php
каталоге активной темы.
Установка файлов cookie в WordPress
Зачем нам устанавливать куки?
Когда пользователи посещают ваше веб-приложение, они вводят свою информацию (имена пользователей, пароли, личные данные и т. Д.) В форме на передней панели. Ваш сайт должен как-то уведомить их, что их информация будет сохранена в куки. Например, некоторые сайты позволяют пользователю выбрать опцию «Запомнить меня».
Мы установим файлы cookie в WordPress с помощью функции setcookie()
чтобы впоследствии мы могли получить их значение и при необходимости изменить его. Высокое представление о процессе предполагает, что мы будем отправлять cookie вместе с другими HTTP headers
.
Как установить Cookies
Функция setcookie()
довольно проста. Синтаксис выглядит следующим образом:
setcookie(name, value, expire, path, domain, secure, httponly);
Все, что вам нужно сделать, это передать значения, которые вы хотите сохранить. Если вы хотите сохранить имя пользователя вашего посетителя, код должен выглядеть примерно так:
<?php add_action( 'init', 'my_setcookie_example' ); function my_setcookie_example() { setcookie( $visitor_username, $username_value, 3 * DAYS_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN ); } ?>
Обратите внимание, что значение времени установлено на три дня, что означает, что срок действия файла cookie истекает через три дня после создания. Значение DAYS_IN_SECONDS
является константой, предоставляемой WordPress. Вам не нужно беспокоиться о последних двух параметрах — WordPress определяет их самостоятельно. COOKIEPATH
определяет путь к вашему сайту, тогда как COOKIE_DOMAIN
является доменом сайта.
Если вы разбираетесь в PHP-кодировании, вы можете установить срок действия в зависимости от пользовательского ввода. Вы когда-нибудь сталкивались с сайтом, который спрашивал «Запомнить меня на Х дней»? Они следуют тому же принципу установки срока действия файлов cookie, основываясь на значении X, которое пользователь вводит / выбирает.
Когда мы запускаем функцию, мы видим, что куки были добавлены в браузер. Для того, чтобы изменить cookie, все, что вам нужно сделать, это снова установить cookie, используя setcookie()
.
Получение Cookies в WordPress
Зачем нам нужны куки в WordPress?
После того, как вы создали куки, вам нужно будет извлечь из них данные, когда ваши посетители вернутся на ваш сайт. Чтобы предотвратить любые ненужные ошибки, мы сначала используем функцию isset()
чтобы определить, имеет ли cookie какое-либо значение, то есть было ли оно установлено.
Если cookie был установлен, мы отобразим значение, которое будет получено для его отображения.
Как получить куки в WordPress
Чтобы получить cookie, который мы создали в приведенном выше примере, мы будем использовать переменную $_COOKIE
которая по сути является ассоциативным массивом. Чтобы получить значение файла cookie, который мы создали, нам нужно найти его по имени в массиве.
<?php if(!isset($_COOKIE[$visitor_username])) { echo "The cookie: '" . $visitor_username . "' is not set."; } else { echo "The cookie '" . $visitor_username . "' is set."; echo "Value of cookie: " . $_COOKIE[$visitor_username]; } ?>
Обратите внимание, что прежде чем мы действительно передадим имя куки-файла в переменную $_COOKIE
, мы должны убедиться, что куки-файл был установлен. В приведенном выше примере мы сделали это с помощью функции isset()
. Функция isset()
возвращает TRUE, если cookie был установлен, и FALSE в противном случае.
Ключевой момент, на который следует обратить внимание, заключается в том, что когда мы устанавливаем cookie и отправляем его в HTTP header
, его значение автоматически кодируется URL . Точно так же, когда мы получаем cookie, значение декодируется по умолчанию. Если по какой-то причине вы хотели бы избежать кодирования URL-адреса файла cookie при его отправке, вы можете использовать setrawcookie()
.
Удаление Cookies в WordPress
Зачем нам удалять куки в WordPress?
Теперь, когда вы успешно установили и получили куки, вы, вероятно, задаетесь вопросом, как мы их удалим. Нужна ли нам новая функция? Ответ — нет.
Как я упоминал ранее, манипулирование файлами cookie в WordPress является простым. Чтобы удалить (или сбросить) cookie, мы удалим cookie, а затем используем ту же функцию, которую использовали для его установки, чтобы удалить. Это немного сбивает с толку? Не волнуйся, просто подожди там. Единственное, что отличается, будет срок годности.
<?php unset( $_COOKIE[$visitor_username] ); setcookie( $visitor_username, '', time() - ( 15 * 60 ) ); ?>
В первой строке кода мы используем функцию unset()
чтобы удалить значение cookie из ассоциативного массива $_COOKIE
. Во второй строке мы принудительно истекаем срок действия куки, устанавливая его значение в пустое значение и передавая отметку времени, которая была в прошлом.
Первый параметр — это имя переменной cookie, второй параметр — нулевое значение, а третий параметр обозначает 15 минут (15 * 60) в прошлом.
После удаления файла cookie вы захотите перенаправить посетителей на домашнюю страницу WordPress. Для этого добавьте следующий код в файл:
wp_redirect( home_url(), 302 ); exit;
Вам не обязательно сразу перенаправлять пользователя на домашнюю страницу WordPress. Вы можете следить за удалением куки с другими домашними задачами. Но рано или поздно вам придется перенаправить пользователя на другую страницу и, условно говоря, это должна быть домашняя страница.
Завершение
В этой статье мы прошли простое руководство по установке, получению и удалению файлов cookie в WordPress с использованием PHP. Мы также рассмотрели некоторые переменные, с которыми вы столкнетесь во время процедуры, и что они на самом деле делают.
Управление файлами cookie в WordPress легко для любого, кто понимает основы PHP — и для тех, кто этого не знает, теперь они знают!
Вы также можете проверить официальную документацию по WordPress и куки здесь .
Были ли у вас какие-либо проблемы с манипуляциями с файлами cookie? Есть ли другой способ, которым вы следуете, чтобы установить, получить или удалить куки? Мы хотели бы услышать от вас в разделе комментариев ниже.