Как добавить cookie на WordPress сайт: пошаговая инструкция

Cookie (куки) – это небольшие текстовые файлы, которые веб-сервер отправляет браузеру пользователя. Браузер сохраняет эти файлы и отправляет их обратно серверу при последующих запросах. Это позволяет сайту «запоминать» информацию о пользователе и его действиях.

Определение Cookie: простыми словами

Представьте, что cookie – это как временный пропуск или бейдж, который сайт выдает вашему браузеру. Когда вы возвращаетесь на сайт, браузер показывает этот «пропуск», и сайт узнает вас, вспоминает ваши настройки или статус входа.

Роль Cookie в WordPress: примеры использования (авторизация, аналитика, персонализация)

На WordPress-сайтах cookie играют ключевую роль во многих функциях:

Авторизация: WordPress использует cookie для хранения информации о сессии вошедшего пользователя (wordpress_logged_in_[hash]). Это позволяет пользователю перемещаться по сайту, не вводя логин и пароль на каждой странице.

Аналитика: Системы веб-аналитики (Google Analytics, Яндекс.Метрика) используют cookie для отслеживания поведения пользователей: уникальные визиты, источники трафика, просмотренные страницы. Это помогает понять аудиторию и эффективность сайта.

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

Комментарии: WordPress использует cookie для запоминания имени и email комментатора, чтобы ему не приходилось вводить их снова (comment_author_[hash], comment_author_email_[hash]).

Корзина в WooCommerce: В интернет-магазинах на WooCommerce cookie используются для хранения информации о содержимом корзины пользователя.

Законодательство и Cookie: GDPR и согласие пользователей

С введением GDPR (Общего регламента по защите данных) и других законов о конфиденциальности (например, CCPA), использование cookie, особенно тех, которые собирают персональные данные или отслеживают поведение пользователя (трекинговые, рекламные, аналитические), требует явного согласия пользователя перед их установкой. Сайты обязаны информировать посетителей о типах используемых cookie и предоставлять возможность управлять ими.

Способы добавления Cookie на WordPress сайт

Существует несколько подходов к добавлению и управлению cookie на WordPress-сайте, выбор зависит от ваших технических навыков и потребностей.

Добавление Cookie через functions.php (для разработчиков)

Этот метод предполагает добавление PHP-кода непосредственно в файл functions.php вашей активной темы (или, что предпочтительнее, дочерней темы). Он дает полный контроль над процессом, но требует понимания PHP и структуры WordPress.

Использование плагинов для управления Cookie: обзор популярных решений (например, CookieYes, Complianz)

Плагины являются наиболее популярным и удобным способом для большинства пользователей. Они предлагают готовые решения для получения согласия пользователей (баннеры), управления категориями cookie, автоматической блокировки скриптов до получения согласия и соответствия требованиям GDPR.

CookieYes (WebToffee): Популярный плагин с широким функционалом для создания баннеров согласия, сканирования сайта на наличие cookie, автоматической блокировки скриптов и ведения журнала согласий.

Complianz – GDPR/CCPA Cookie Consent: Комплексное решение, которое помогает не только с cookie, но и с другими аспектами GDPR/CCPA, генерируя необходимые юридические документы (политику конфиденциальности, политику cookie) на основе опросника.

Cookie Notice & Compliance for GDPR / CCPA: Более простой плагин для отображения уведомления о cookie и получения базового согласия.

Ручная установка Cookie с помощью JavaScript (базовый пример)

Cookie можно устанавливать и на стороне клиента с помощью JavaScript. Это может быть полезно для отслеживания определенных действий пользователя в браузере без перезагрузки страницы. Однако управление согласием и блокировка остаются актуальными.

/**
 * Устанавливает cookie с именем, значением и сроком жизни в днях.
 *
 * @param {string} name Имя cookie.
 * @param {string} value Значение cookie.
 * @param {number} days Срок жизни cookie в днях.
 */
function setCookie(name, value, days) {
  let expires = "";
  if (days) {
    const date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    expires = "; expires=" + date.toUTCString();
  }
  // Добавляем SameSite=Lax для безопасности
  document.cookie = name + "=" + (value || "") + expires + "; path=/; SameSite=Lax";
}

// Пример использования: установить cookie 'user_preference' со значением 'dark_mode' на 30 дней
// setCookie('user_preference', 'dark_mode', 30);

Добавление Cookie через functions.php: пошаговая инструкция

Этот метод подходит для разработчиков, которым нужен полный контроль над установкой cookie.

Резервное копирование functions.php (важный шаг!)

Перед внесением любых изменений в functions.php, обязательно создайте его резервную копию. Ошибка в этом файле может привести к неработоспособности сайта («белому экрану»). Лучше всего вносить изменения через FTP/SFTP или файловый менеджер хостинга, имея возможность быстро восстановить исходный файл.

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

Редактирование functions.php: добавление кода для установки Cookie

Для установки cookie с помощью PHP используется функция setcookie(). Важно вызывать эту функцию до любого вывода HTML или другого контента в браузер. В WordPress это обычно делается с помощью хуков, например, init или wp_loaded.

Пример кода: установка простого Cookie с ограниченным временем жизни

Добавьте следующий код в конец файла functions.php вашей дочерней темы:

 $expiry_time,
                'path' => $cookie_path,
                'domain' => '', // Пустое значение - текущий домен
                'secure' => true, // Передавать только по HTTPS
                'httponly' => true, // Запретить доступ к cookie через JavaScript
                'samesite' => 'Lax' // Защита от CSRF
            ]
        );
    }
}

// Добавляем нашу функцию на хук 'init'
add_action('init', 'set_custom_user_cookie');

Пояснения к коду:

set_custom_user_cookie(): Наша функция для установки cookie.

if (!isset($_COOKIE['my_custom_visitor_status'])): Проверка, чтобы cookie устанавливалось только один раз за сессию или до истечения срока.

Реклама

setcookie(): Стандартная функция PHP. Мы используем современный синтаксис с передачей массива опций для лучшей читаемости и безопасности (secure, httponly, samesite).

add_action('init', 'set_custom_user_cookie'): Привязываем выполнение нашей функции к событию init в WordPress, которое происходит до вывода контента.

Тестирование установленного Cookie: проверка в браузере

Сохраните изменения в functions.php.

Откройте сайт в браузере (желательно в режиме инкогнито для чистоты эксперимента).

Откройте инструменты разработчика (обычно клавиша F12).

Перейдите на вкладку «Приложение» (Application) или «Хранилище» (Storage).

Найдите раздел «Cookie» и выберите домен вашего сайта.

В списке cookie найдите my_custom_visitor_status. Проверьте его значение (visited) и срок истечения (Expires / Max-Age).

Добавление Cookie с помощью плагина: пошаговая инструкция (на примере плагина CookieYes)

Использование плагина значительно упрощает процесс, особенно в части соблюдения GDPR.

Установка и активация плагина CookieYes

В админ-панели WordPress перейдите в «Плагины» > «Добавить новый».

В строке поиска введите «CookieYes».

Найдите плагин «CookieYes – GDPR Cookie Consent & Compliance Notice (CCPA Ready)» от WebToffee.

Нажмите «Установить», а затем «Активировать».

Настройка плагина: баннер согласия на использование Cookie

После активации появится новый пункт меню «CookieYes» или запрос на запуск мастера настройки.

Перейдите в настройки плагина (обычно «CookieYes» > «Consent Banner»).

Выберите тип закона (GDPR, CCPA и т.д.) или позвольте плагину определить его по геолокации.

Настройте внешний вид баннера: тип (баннер, всплывающее окно), положение, цвета, тексты кнопок («Принять все», «Отклонить», «Настроить»).

Отредактируйте текст уведомления, объясняя, зачем ваш сайт использует cookie.

Категории Cookie и их описание: настройка в плагине

Перейдите в раздел управления cookie (может называться «Cookie Manager», «Cookie List» или аналогично).

CookieYes автоматически сканирует ваш сайт на наличие cookie и пытается их категоризировать (например, «Необходимые», «Функциональные», «Аналитические», «Рекламные»).

Проверьте список найденных cookie и их категории. При необходимости добавьте описание для каждой категории и для конкретных cookie, объясняя их назначение.

«Необходимые» (Strictly Necessary) cookie обычно активны по умолчанию и не могут быть отключены пользователем, так как без них сайт не будет работать корректно.

Блокировка скриптов до получения согласия: важная настройка GDPR

Это критически важная функция для соответствия GDPR.

Перейдите в настройки сканирования или блокировки скриптов (Script Blocker).

Активируйте автоматическую блокировку. Плагин попытается идентифицировать скрипты, устанавливающие не необходимые cookie (например, Google Analytics, Facebook Pixel), и заблокирует их выполнение до тех пор, пока пользователь не даст явное согласие на соответствующую категорию cookie.

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

Тестирование работы плагина: проверка баннера и блокировки скриптов

Откройте сайт в режиме инкогнито или очистите cookie для вашего сайта.

Убедитесь, что баннер согласия отображается корректно.

Не взаимодействуя с баннером, откройте инструменты разработчика и проверьте, какие cookie установлены. В идеале, должны быть только «необходимые».

Проверьте, загружаются ли скрипты аналитики или рекламы (например, в консоли или на вкладке Network). Они не должны загружаться.

Нажмите «Отклонить» на баннере. Проверьте снова – сторонние скрипты по-прежнему не должны загружаться.

Перезагрузите страницу в инкогнито, нажмите «Принять все». Теперь проверьте – должны установиться все cookie (включая аналитические/рекламные) и соответствующие скрипты должны загрузиться.

Протестируйте выборочное согласие через кнопку «Настроить» (если она есть).

Управление Cookie и устранение неполадок

Понимание того, как управлять cookie и решать распространенные проблемы, важно для поддержания работоспособности и производительности сайта.

Просмотр и удаление Cookie в браузере

Как упоминалось ранее, инструменты разработчика браузера (F12) позволяют просматривать все cookie, связанные с текущим сайтом (вкладка Application/Storage > Cookies). Там же можно удалять отдельные cookie или все cookie для сайта, что полезно при тестировании и отладке.

Типичные проблемы с Cookie: Cookie не сохраняются, Cookie конфликтуют

Cookie не сохраняются:

Убедитесь, что setcookie() вызывается до любого вывода HTML.

Проверьте параметры path и domain при установке cookie. Неправильный путь или домен могут помешать браузеру сохранить или отправить cookie.

Проверьте настройки безопасности браузера пользователя (могут быть установлены на блокировку всех или сторонних cookie).

Убедитесь, что для secure cookie сайт работает по HTTPS.

Cookie конфликтуют:

Плагины или код темы могут пытаться установить cookie с одинаковыми именами, перезаписывая друг друга. Используйте уникальные и описательные имена для ваших cookie.

Проблемы с кэшированием на стороне сервера или браузера могут приводить к отправке устаревших cookie.

Рекомендации по оптимизации использования Cookie для улучшения производительности сайта

Минимизируйте размер Cookie: Cookie передаются с каждым HTTP-запросом к вашему домену. Большие cookie могут замедлить загрузку сайта. Храните в cookie только необходимый минимум информации.

Устанавливайте правильный срок жизни (Expiration/Max-Age): Не делайте cookie вечными без необходимости. Для сессионных данных используйте сессионные cookie (без expires).

Ограничивайте область действия (Path, Domain): Устанавливайте cookie только для тех путей (path) и доменов (domain), где они действительно нужны.

Используйте атрибуты HttpOnly и Secure: HttpOnly защищает от XSS-атак, запрещая доступ к cookie через JavaScript. Secure гарантирует передачу cookie только по HTTPS.

Используйте SameSite (Lax или Strict): Это важный атрибут для защиты от CSRF-атак. Lax является хорошим балансом между безопасностью и функциональностью, Strict — более строгий вариант.

Избегайте избыточного количества Cookie: Большое количество cookie также увеличивает размер HTTP-заголовков.

Рассмотрите альтернативы: Для хранения больших объемов данных на стороне клиента используйте localStorage или sessionStorage, если данные не должны отправляться на сервер с каждым запросом.


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