Как установить пользовательские файлы cookie перед выводом


Какой верный способ проверить/установить файлы cookie перед отправкой заголовков php? Есть ли действие или фильтр, которые были бы лучшим местом для подключения функции setcookie()?

Author: Dan Gayle, 2010-09-24

3 answers

Зависит от того, нужно ли вам проверять аутентификацию пользователя WordPress или нет. Если вам нужно знать, являются ли они зарегистрированными пользователями, подключитесь к 'init'. В противном случае, чем скорее, тем лучше.

Если это что-то, что должно срабатывать при каждой загрузке страницы, и проверяет только наличие файла cookie и не требует подключения ни к одному из API WP, я бы поместил его в пользовательский MU-плагин с именем 0000a.php, чтобы убедиться, что он срабатывает до того, как какие-либо неосновные файлы могут случайно отправить заголовки.

 3
Author: John P Bloch, 2010-09-24 21:49:11

Я думаю, что functions.php определенно обрабатывается перед любым выводом и подходит для расширений.

Что касается крюка, может быть, after_setup_theme, это произойдет сразу после этого.

 2
Author: Rarst, 2010-09-24 20:05:05

Вы можете создать функцию для проверки или установки файлов 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');

Возможно, сейчас существует лучший способ. Плагин был написано больше года назад.

 0
Author: Chris_O, 2010-09-24 21:02:59