У меня есть сайт WordPress, у которого есть логин, управляемый сторонним сервисом. Когда пользователь регистрируется этой службой, устанавливается cookie.Отключить WP Super Cache Когда установлен Cookie
Когда пользователь вошел в систему (набор файлов cookie), я не хочу, чтобы страница была кэширована с использованием WP Super Cache. Я знаю, что могу использовать define ('DONOTCACHEPAGE', TRUE); но как мне установить это достаточно рано (желательно в functions.php), когда установлен файл cookie третьей стороны?
Я пробовал крюк «init», но это не вызывается на кешированной странице (я предполагаю, что это просто загружается из .html напрямую).
function disable_super_cache() {
die("Cookie Logic");
//define(‘DONOTCACHEPAGE’, TRUE);
}
add_action('init', 'disable_super_cache', 9999);
Как я могу установить это достаточно рано?
UPDATE
Я понял, что я смотрел на это с неправильным углом. Мне не нужно устанавливать константу как действие, так как ее нужно как можно скорее установить. Ближайшим я сейчас работаю в wp-config.php (так как Super Cache вызывается еще до корневой функции functions.php). Но это похоже на массовое обходное решение, и лучшие предложения будут приветствоваться.
/**
* Disable WP Super Cache when a user is logged in
*/
if(isset($_COOKIE['LoggedInCookie'])){
$_GET['donotcachepage'] = '{secret}';
//define('DONOTCACHEPAGE', 1) // Doesn't stop caching even in wp-config.php, bug in WP-Super-Cache??;
}
Прошли ли вы через API и проверили все действия? https://codex.wordpress.org/Plugin_API/Action_Reference –
@PeterFeatherstone да, я просто попробовал все из них «init» и не повезло. Я думаю, что я могу попробовать отредактировать «wp-cache-config.php», чтобы добавить в функцию ... – alexmcfarlane