Какой надежный способ проверить/установить файлы cookie перед отправкой заголовков php? Есть ли действие или фильтр, который лучше всего подходит для подключения setcookie()
функции?
dangayleМастер
Как настроить пользовательские файлы cookie перед выводом
Share
Зависит от того, нужно ли вам проверять аутентификацию пользователя WordPress. Если вам нужно знать, является ли он авторизованным пользователем, подключитесь к
'init'
. В противном случае, чем раньше, тем лучше.Если это что-то, что должно срабатывать при каждой загрузке страницы, проверяет только наличие файла cookie и не требует подключения к каким-либо API-интерфейсам WP, я бы поместил его в специальный MU-плагин с именем
0000a.php
, чтобы гарантировать, что он срабатывает до любые неосновные файлы могут случайно отправить заголовки.Я создаю собственный плагин отслеживания, который использует это
$post-ID
значение и будет запускаться на каждой общедоступной странице.К сожалению,
$post->ID
он недоступен до тех пор, пока не будут отправлены заголовки. Вот как происходит последовательность загрузки после загрузки WP:WP::parse_request()
считывает запрос и превращает его в переменные для использования WordPress, затемWP::send_headers()
отправляет информацию заголовка в браузер (один из 404, html или xml). ЗатемWP_Query::parse_request()
иWP_Query::get_posts()
стреляйте, настраивая эти глобалы.Пока я отправляю файлы cookie до отправки любого html, все будет хорошо. Так что бы где?
template_redirect
? Я думаю, что это последний хук действия, доступный перед отправкой страницы, верно?Я бы пошел с
'wp'
. Он срабатывает сразу после регистрации глобальных переменных; это самое раннее, когда вы можете использовать$post
глобальный.Добавление действия в
'wp'
работает отлично!+1 за то, что поместил его в functions.php, если можно. Работал на меня.
Все это делается ВНУТРИ WordPress, зачем мне проверять, работает ли WP?
@ Дэн Гейл, в твоем случае, ты бы этого не сделал. Этот плагин должен перенаправить на страницу проверки, чтобы установить файл cookie, который находится за пределами WordPress.
Я думаю
functions.php
, что он определенно обрабатывается перед любым выводом и является подходящим местом для расширений.Что касается крючка, может быть
after_setup_theme
, он идет сразу после этого.Вы можете создать функцию для проверки или установки файла cookie, но вы должны проверить wp-config.php, потому что, если вы используете перенаправление, файл будет доступен непосредственно перед index.php при перенаправлении.
Это из плагина, который Марк Джакит написал для проверки возраста, который требует, чтобы пользователь заполнил форму проверки возраста перед входом на сайт. Я модифицировал его для ликера, пива, белого сайта, который я сделал.
Сейчас может существовать лучший способ. Плагин был написан больше года назад.