Установка и проверка cookie в WordPress

Дата публикации:Сентябрь 14, 2013

Cookie – небольшие «кусочки» информации, которые веб-сайты могут хранить на вашем компьютере для использования в будущем. Скажем, WordPress использует cookie для хранения вашего сеанса входа в систему, чтобы вам не приходилось регистрироваться каждый раз, когда вы обращаетесь к защищенной странице.

Они могут использоваться также для более простых задач – к примеру, для хранения информации о том, когда пользователь заполнил форму. В примере ниже я покажу, как задать cookie в браузере пользователя при заполнении формы Gravity Form.

Настройка cookie

У Gravity Forms имеется хук gform_after_submission, который действует после того, как форма была отправлена и передана в базу данных. Мы будем использовать этот хук для установки cookie, чтобы узнать, когда именно пользователь заполнил форму. Хук gform_after_submission может иметь номер, который будет связываться с определенной формой – в нашем случае я добавил к нему номер ID, равный 1. Давайте взглянем на следующий функциональный плагин:

function set_form_1_complete_cookie() {
	setcookie( 'form-1-complete', 1, strtotime( '+30 days' ), COOKIEPATH, COOKIE_DOMAIN, false, false );
}

add_action( 'gform_after_submission_1', 'set_form_1_complete_cookie' );

Функция setcookie – это PHP-функция, принимающая следующие параметры:

form-1-complete – название cookie. Это описательное название, которое вы будете использовать при проверке cookie, как это будет сделано далее.

1 – значение cookie. Я задал 1, чтобы пометить, что форма была заполнена (0 – не заполнена).

strtotime( ‘+30 days’ )  — сколько времени будет храниться cookie. Использование strtotime позволяет задавать время, связанное с запуском функции, а не с фиксированным временем, как, к примеру, Dec 31, 2020. В данном случае cookie истекут спустя 30 дней с момента заполнения пользователем формы.

Оставшиеся четыре параметра не так важны, за исключением тех случаев, когда вам требуется задать, должны ли cookie быть доступны по HTTP или HTTPS.

Теперь, каждый раз, когда форма 1 заполнена, cookie с названием form-1-complete и значением 1 будут установлены в пользовательском браузере, причем истекать они будут через 30 дней.

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

Проверка cookie

Теперь, когда вы можете устанавливать cookie, давайте попробуем использовать их, чтобы выполнить какое-либо действие в нужный момент — к примеру, вывести на экран уведомление или обеспечить доступ к ограниченному ранее материалу.

Чтобы проверить, установлен ли cookie в браузере пользователя, нам нужно взглянуть на $_COOKIE[‘form-1-complete’]. Обратите внимание, что form-1-complete – это название cookie, которое мы задали выше.

В примере ниже я объединил проверку cookie с несколькими другими проверками, чтобы скрыть премиум-контент до тех пор, пока все проверки не будут успешно выполнены. Если у записи значение meta_key равно «protected» (т.е. стандартный контент не затрагивается), пользователь не зарегистрирован (чтобы администраторы всегда могли видеть контент) и cookie ‘form-1-complete’ не установлен (форма не была заполнена), то контент будет скрыт от пользователя и вместо него на экран будет выведено сообщение, призывающее заполнить форму. В противном случае, если какая-то из переменных не встретится (к примеру, если пользователь заполнил форму, т.е. cookie form-1-complete установлен и пользователь является подписчиком на вашу новостную рассылку), тогда контент будет показан без ограничений.

function restrict_post_content_form_1($content) {
	if( get_post_meta( get_the_ID(), 'protected', true ) == 'yes' && !is_user_logged_in() && !isset( $_COOKIE['form-1-complete'] ) ) {
				return gravity_form(1, false, false, false) . '<p>This article is only available to subscribers to our newsletter. You may subscribe using the form above.</p>';
	}
	else {
		return $content;
	}
}

add_filter( 'the_content', 'restrict_post_content_form_1' );

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

Естественно, cookie имеют свои ограничения: к примеру, они могут быть удалены, некоторые пользователи могут запретить создание cookie в своем браузере. Таким образом, cookie будут работать лишь в некоторых ситуациях, но не во всех.

Источник: www.doitwithwp.com

Поделиться

2 комментария

  1. Дмитрий says:

    Спасибо за статью! А можно побольше разных примеров? Для наглядности. А то только один!

  2. Alex says:

    Большое спасибо! Инфо. была полезной.

Оставить комментарий

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

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