Как я могу устанавливать, получать и уничтожать cookies в WordPress?

#php #wordpress #cookies

#php #wordpress #файлы cookie

Вопрос:

Как я могу устанавливать, получать и уничтожать cookies в WordPress?

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

Комментарии:

1. Извините, как упоминалось в комментарии, следующее вам не подходит: codex.wordpress.org/Function_Reference/wp_setcookie Просто используйте то, что предложил Фил. Удачи!

2. Все, что это делает, это устанавливает идентификатор пользователя на основе файлов cookie для аутентификации. Смотрите codex.wordpress.org/Function_Reference/wp_set_auth_cookie

3. Будьте осторожны, большинство статей там делают это неправильно или, по крайней мере, не так, как в WordPress. Обязательно используйте предварительно настроенные константы cookie, предлагаемые WordPress, ознакомьтесь с этой статьей для получения дополнительной информации о том, как правильно устанавливать, получать и удалять cookies benmarshall.me/setting-cookies-in-wordpress

Ответ №1:

Вы можете извлекать cookies и манипулировать ими либо на стороне сервера, используя PHP, либо на стороне клиента, используя JavaScript.

В PHP вы устанавливаете cookies с помощью setcookie() . Обратите внимание, что это должно быть сделано до отправки любого вывода в браузер, что может быть довольно сложной задачей в WordPress. Вы в значительной степени ограничены некоторыми из ранних запущенных хуков, которые вы можете установить с помощью плагина или файла темы ( functions.php например), например

 add_action('init', function() {
    if (!isset($_COOKIE['my_cookie'])) {
        setcookie('my_cookie', 'some default value', strtotime(' 1 day'));
    }
});
  

Получение cookies в PHP намного проще. Просто получите их по имени из $_COOKIE super global, например

 $cookieValue = $_COOKIE['my_cookie'];
  

Для удаления файла cookie требуется установить файл с датой истечения срока действия в прошлом, что-то вроде

 setcookie('my_cookie', null, strtotime('-1 day'));
  

Для JavaScript я бы рекомендовал взглянуть на один из плагинов jQuery cookie (поскольку jQuery уже является частью WordPress). Попробуйте http://plugins .jquery.com/project/Cookie

Комментарии:

1. Также — убедитесь, что вы устанавливаете правильный домен для ваших cookies. В будущем вы можете захотеть, чтобы основной домен и поддомен имели доступ к одним и тем же cookies. Если вы установите свои файлы cookie прямо сейчас, вам не придется беспокоиться о их сбросе в будущем.

2. При установке файла cookie в wordpress я бы использовал некоторые из установленных для него констант: setcookie( ‘my_cookie’, ‘некоторое значение по умолчанию’, strtotime (‘ 1 день’), COOKIEPATH, COOKIE_DOMAIN, false ); Без указания пути и домена вы будете устанавливать файл cookie постранично для сайта.

3. Хотя это правда, что cookie лучше всего устанавливать с ранним подключением, или как вы это называете quite the challenge in WordPress , всегда есть возможность установить его позже с помощью AJAX ответа.

4. @ObmerkKronen еще в 2011 году, когда я писал этот ответ, я не думаю, что у WordPress был AJAX вариант ответа 🙂

5. Насколько я знаю, опция ajax в WordPress существовала по крайней мере с 2008 (когда я начал ее использовать) и наверняка с версии 2.8 в той или иной форме. Но, чтобы было ясно, целью комментария было не оспаривание вашего ответа, а скорее его завершение для дальнейшего использования . 🙂

Ответ №2:

Попробуйте этот код внутри function.php , чтобы поиграть с Cookies в WordPress

Установите файл cookie в WordPress

 add_action( 'init', 'my_setcookie' );
function my_setcookie() {
setcookie( 'my-name', 'my-value', time()   3600, COOKIEPATH, COOKIE_DOMAIN   );
}
  

Получить файл cookie в WordPress

 add_action( 'wp_head', 'my_getcookie' );
function my_getcookie() {
$alert = isset( $_COOKIE['my-name'] ) ? $_COOKIE['my-name'] : 'not set';
 echo "<script type='text/javascript'>alert('$alert')</script>";
}
  

Удалите или отмените установку cookie в WordPress

 add_action( 'init', 'my_deletecookie' );
function my_deletecookie() {
setcookie( 'my-name', '', time() - 3600, COOKIEPATH, COOKIE_DOMAIN );
}
  

Ответ №3:

Чтобы установить cookie в WordPress, я использовал значение $ domain. С его помощью я могу использовать значение cookie по всему сайту.

 $domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false;

setcookie("cookie_name", 'cookie_value', 0, '/', $domain);
  

Чтобы отменить установку

 setcookie("cookie_name", '', time()-1000, '/');