Cookie WordPress: як встановити, отримати і видалити

16

Від автора: на відміну від сучасних веб-додатків, WordPress не фіксує дані про вступників запитах. При створенні програми на базі WordPress вам знадобиться якась система для обробки сесій. Cookies в WordPress це простий, стандартний механізм управління певними настройками авторизованих користувачів на front-end стороні. У цій статті ми коротко обговоримо куки, навіщо вони потрібні в WordPress, і як вебмастер може їх використовувати.

Огляд Cookies

Куки це маленька частинка інформації, що посилається сайтом веб-браузеру користувача. Вони можуть зберігати дані про користувача, такі як ім’я користувача/пароль, додані в кошик товари в інтернет-магазинах і т. д. При повторному відвідуванні сайту куки надсилаються з браузера назад на сервер, тим самим сайт отримує дані про попередню активності користувача.

Найчастіше зашифровані файли cookie. Основне їх завдання-це допомагати користувачам. Якщо часто відвідуваний вами сайт запам’ятовує ваш логін і пароль, вам не потрібно повторно авторизовуватись при відвідуванні даного сайту. При відвідуванні інтернет-магазину куки допоможуть сайту показати вам товари, які ви хочете придбати.

Як тепер видно, куки дуже важливі для сайту. Нижче ми покажемо, як додати куки в WordPress. Перш ніж зануритися в код давайте обговоримо деталі:

У цьому уроці ми будемо використовувати PHP код.

Посилати куки ми будемо в HTTP заголовках.

Всі функції будуть запускатися в init.

Код буде додаватися в файл function.php активної теми.

Встановлення Cookies у WordPress

Навіщо нам потрібно встановлювати cookie?

Коли користувач відвідує ваш сайт, він вбиває свою інформацію (логін, пароль, особисті дані і т. д.) у форму на стороні front-end’а. Ваш сайт повинен якимось чином повідомити користувача про те, що його дані будуть збережені в кукі. Приміром, на деяких сайтах є галочка «Запам’ятати мене».

Встановлювати куки в WordPress ми будемо через функцію setcookie(). З її допомогою потім можна буде отримати значення і за бажанням модифікувати його. Процес припускає, що ми будемо посилати куки разом з іншими HTTP заголовками.

Як встановити куки

Функція setcookie() досить проста. Синтаксис:

setcookie(name, value, expire, path, domain, secure, httponly);

Все що потрібно це передати ті значення, які ви збираєтеся зберігати. Якщо ви хочете зберегти логін користувача, код буде приблизно такий:

Зверніть увагу, що час життя cookie задано на 3 дні. Це означає, що куки помруть через 3 дні після створення. DAYS_IN_SECONDS – константа WordPress. Останні два параметри можна не ставити, WordPress зробить це за вас. COOKIEPATH задає шлях до вашого сайту, а COOKIE_DOMAIN задає домен сайту.

Якщо ви більш досвідчений PHP розробник, то час смерті куки можна поставити на основі обраних або введених даних користувача. Ви коли-небудь бачили, як деякі сайти запитують «Запам’ятати мене на Х днів»? Принцип роботи такий самий, тільки час життя cookie задається на основі вибраного або введеного значення Х.

Після запуску функції можна помітити, що в браузер додадуться нові куки. Для їх модифікації необхідно лише встановити куки заново за допомогою функції setcookie().

Отримання Cookies у WordPress

Навіщо нам потрібно витягувати файли cookie?

Якщо ви задали куки, то при повторному відвідуванні користувачем сайту вам знадобиться їх витягти. Щоб уникнути різних помилок, спершу ми скористаємося функцією isset(), щоб визначити, чи встановлено значення в кукі, тобто задані вони чи ні.

Якщо куки були встановлені, ми скористаємося функцією echo для їх відображення.

Як отримати куки у WordPress

Щоб витягти файли cookie, створені в прикладі вище, ми скористаємося глобальної асоціативним масивом $_COOKIE. Щоб витягнути значення, необхідно в якості ключа масиву задати ім’я куки.

Зауважте, що перед тим, як передати ім’я куки в масив $_COOKIE, необхідно переконатися, що вони були задані. У наведеному вище прикладі ми перевіряємо існування куки за допомогою функції isset(). Функція повертає TRUE, якщо куки були задані і FALSE в протилежному випадку.

Основний момент, на який варто звернути увагу тут, полягає в тому, що коли ми задаємо куки і посилаємо їх в HTTP заголовках, їх значення автоматично шифруються. Схожим чином куки розшифровуються при їх отриманні. Якщо з якихось причин вам не потрібно шифрувати куки при передачі, то можна скористатися функцією setrawcookie().

Видалення Cookies у WordPress

Навіщо потрібно видаляти куки в WordPress?

Тепер, коли ви вмієте ставити і витягувати файли cookie, вам, напевно, цікаво, як їх видаляти. Потрібна ще одна функція? Немає.

Як я говорив вище, маніпулювати куки в WordPress дуже легко. Для видалення ми скористаємося функцією unset(), а потім скористаємося тією ж функцією, що і для установки. Заплутано? Не турбуйтеся, нижче все пояснено. Відрізнятися буде тільки час смерті куки.

У першому рядку ми за допомогою функції unset() видаляємо значення куки з масиву $_COOKIE. У другому рядку ми примусово вбиваємо куки, встановивши порожнє значення і негативне час смерті.
Перший параметр – ім’я куки, другий – null, третій параметр означає 15 хвилин тому (15*60).

Після видалення куки необхідно перенаправляти користувачів на домашню сторінку WordPress. Для цього додайте наступний код:

wp_redirect( home_url(), 302 );
exit;

Необов’язково перенаправляти користувача на домашню сторінку WordPress відразу після видалення куки. Куки можна видаляти у фоновому процесі з іншими завданнями. Однак рано чи пізно вам доведеться перенаправити користувача на іншу сторінку, умовно кажучи, на домашню.

Висновок

У цій статті ми навчилися простому способу встановлення, отримання і видалення куки в WordPress на мові PHP. Також ми розглянули кілька змінних, з якими ви будете ще стикатися під час роботи, а також дізналися про їх призначення. Маніпуляції з куки в WordPress вкрай прості для тих, хто знайомий з основами PHP – а ті, хто не знайомий, тепер знають!

За посиланням можна ознайомитися з куки і офіційною документацією WordPress. Чи були у вас проблеми при роботі з куки? Ви знаєте які-небудь інші способи встановлення, отримання і видалення куки? Будемо раді обговорити все в коментарях.