【发布时间】:2017-06-23 08:26:54
【问题描述】:
我有一个 WordPress 网站,其登录由第三方服务管理。当用户通过此服务登录时,会设置一个 cookie。
当用户登录(cookie 集)时,我不希望页面使用 WP Super Cache 进行缓存。我知道我可以使用 define('DONOTCACHEPAGE', TRUE);但是当设置 3rd 方 cookie 时,如何尽早设置(最好在 functions.php 中)?
我尝试了一个“init”钩子,但它不会在缓存页面上调用(我假设这只是直接从 .html 加载的)。
function disable_super_cache() {
die("Cookie Logic");
//define(‘DONOTCACHEPAGE’, TRUE);
}
add_action('init', 'disable_super_cache', 9999);
如何尽早设置?
更新
我意识到我从错误的角度看待这个问题。我不需要将常量设置为动作,因为它只需要尽早设置。我目前最接近的是 wp-config.php 中的以下内容(因为 Super Cache 甚至在 root 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 并检查了所有操作吗? codex.wordpress.org/Plugin_API/Action_Reference
-
@PeterFeatherstone 是的,我只是在“init”之上尝试了所有这些,但没有运气。我想我可能会尝试编辑“wp-cache-config.php”以添加一个函数...
标签: php wordpress caching cookies