Мне нужно установить значение сеанса в моем плагине, но сеанс не начинается, когда WordPress загружает мой плагин, и я не хочу запускать if (!session_id()) session_start(); вручную, потому что другие плагины могут полагаться на установку файлов cookie и т. Д. И сталкиваться с "заголовки уже отправили ошибку".

Есть ли в WordPress какой-нибудь крючок, который запускается после запуска сеанса?

Если нет, то как вы, профессионалы, справляетесь с такими ситуациями?

1
J. Doe 14 Янв 2021 в 01:56

2 ответа

Лучший ответ

Wordpress не использует сеанс. На самом деле есть ряд причин, по которым это очень хорошо изложено в этой публикации stackexchange:

https://wordpress.stackexchange.com/questions/167585/using-sessions-to-filter-posts-bad-thing/168089#168089

Я бы сказал, что если вы беспокоитесь о том, чтобы наступить на плагин, попробуйте подключиться к "plugins_loaded" и использовать этот крючок как запись для вашего плагина (если вы можете, я знаю, что это несколько ограничит функциональность). Но поскольку Wordpress сам по себе не запускает сеанс, на самом деле это просто подбрасывание монеты, прерываете ли вы другой плагин или нет.

2
James Hamann 13 Янв 2021 в 23:06

session_start() не используется Wordpress.

Вы пробовали запускать wp_loaded после полной загрузки WordPress? Или даже wp, которые срабатывают после настройки объекта WP (массив ссылок).

Вы можете ознакомиться с этим вопросом, который поможет дать вам последовательность запуска действия.

Вы также можете взглянуть на CODEX, чтобы лучше видеть все доступные хуки действий https: // codex .wordpress.org / Plugin_API / Action_Reference

1
amarinediary 13 Янв 2021 в 23:08
65710972