Установка Cookie в WordPress на локальный хост - PullRequest
0 голосов
/ 02 апреля 2012

У меня небольшая проблема с установкой файла cookie в моей установке WordPress.

Вот мой код:

function write_cookies() {
    setcookie("category", get_query_var('cat'), time() + 3600 * 24, COOKIEPATH, '', false);
    print($_COOKIE["category"]);
}
add_action('init', 'write_cookies');

Теоретически это должно вывести categoryId, нокажется, ничего не работает.

Я прочитал это на localhost, предоставляя пустую строку, так как домен cookie работает, но я не могу получить какой-либо вывод.Я также пробовал 'localhost', '.localhost', '127.0.0.1', false и NULL в качестве домена.Константа COOKIEPATH в настоящее время выводит '/'

Я читаю файлы cookie через Chrome, и, похоже, что на странице cookie нет изменений.

ОБНОВЛЕНИЕ:

Спасибо за ответы, я объясню, почему мне нужны куки в этом случае ...

В основном, на моих страницах сообщений я хочу показатьдругие посты в той же категории.Для тех, у кого несколько категорий, это означает сохранение маршрута, по которому пользователь прошел, чтобы попасть на пост.Я приведу пример из реальной жизни:

Пользователь перейдет от Home до News Industry, чтобы опубликовать статью под названием «Новое финансирование производственного сектора», которая оживит местных политиков.Теперь, в Других сообщениях для этого раздела, я хотел бы показать сообщения Промышленных новостей, но поскольку конкретный рассматриваемый пост настроен как в Промышленных новостях, так и в Политических Новостях, как я могу узнать, какой маршрут был выбран?

В первом случае это настроено на анализ wp_get_referer (), чтобы определить, какая категория была перед публикацией.Однако, если я затем использую этот раздел «Другие сообщения», чтобы перейти к сообщению, озаглавленному «Новые региональные разработки в производственном секторе», которое классифицируется как отраслевые новости и региональные новости, wp_get_referer возвращает предыдущее сообщение, а не категорию, как требуется в моей логике..

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

Я знаю, что это сбивает с толку, но я ограничен как в дизайне, так и в потребностях клиента в доставке этого конкретного потока.

Как и предполагалось, я обновил свой код для отображения:

function write_cookies() {
    setcookie("category", get_query_var('cat'), false, '/', str_replace('http://www','',get_bloginfo('url')));
    print('test: '.$_COOKIE["category"]);
}
add_action('init', 'write_cookies');

Thisвыводит test: без печенья.

Ответы [ 3 ]

1 голос
/ 02 апреля 2012

Существует известное ограничение Chrome

http://code.google.com/p/chromium/issues/detail?id=56211

Вы не можете установить / получить доступ к http://localhost куки. Нечетная проблема в Chrome.

1 голос
/ 02 апреля 2012

Я бы позволил WordPress определить подходящий домен для меня, используя что-то вроде: str_replace('http://www','',get_bloginfo('url')). То есть если по умолчанию WordPress категорий не будет достаточно.

Вообще говоря, использование категорий и тегов Wordpress по умолчанию гораздо предпочтительнее, чем необработанные куки. Так почему же вам понадобилось печенье?

0 голосов
/ 03 апреля 2012

Я протестировал множество Cookie-доменов на установке, отличной от WordPress, и обнаружил, что в среде localhost единственным успешным при установке переменной доменом был '', то есть пустая строка.

Вот мой код:

function write_cookies() {    
    setcookie("category", get_query_var('cat'), false, '/', '',false);
}

Я также настроил его так, чтобы он вызывался из цикла post, а не из события 'init', это дает мне доступ к значительным переменным для установкив файл cookie, чем в событии init.

...