Как установить пользовательские файлы cookie перед выводом
Какой верный способ проверить/установить файлы cookie перед отправкой заголовков php? Есть ли действие или фильтр, которые были бы лучшим местом для подключения функции setcookie()
?
3 answers
Зависит от того, нужно ли вам проверять аутентификацию пользователя WordPress или нет. Если вам нужно знать, являются ли они зарегистрированными пользователями, подключитесь к 'init'
. В противном случае, чем скорее, тем лучше.
Если это что-то, что должно срабатывать при каждой загрузке страницы, и проверяет только наличие файла cookie и не требует подключения ни к одному из API WP, я бы поместил его в пользовательский MU-плагин с именем 0000a.php
, чтобы убедиться, что он срабатывает до того, как какие-либо неосновные файлы могут случайно отправить заголовки.
Я думаю, что functions.php
определенно обрабатывается перед любым выводом и подходит для расширений.
Что касается крюка, может быть, after_setup_theme
, это произойдет сразу после этого.
Вы можете создать функцию для проверки или установки файлов cookie, но вам необходимо проверить наличие wp-config.php потому что, если вы используете перенаправление, доступ к файлу будет получен непосредственно перед index.php на перенаправлении.
Это из плагина, который написал Марк Джакит Проверка возраста , который требует, чтобы пользователь заполнил форму подтверждения возраста перед входом на сайт. Я изменил его для ликера, пива, сайта wite, который я сделал.
if ( !defined( 'ABSPATH' ) ) { // we're being called directly, to check the cookie
if ( file_exists('../../wp-config.php') )
include('../../wp-config.php');
elseif ( file_exists('../../../wp-config.php') )
include('../../../wp-config.php');
else
die('Could not find wp-config.php');
Возможно, сейчас существует лучший способ. Плагин был написано больше года назад.