这更像是一个代码审查请求,而不是一个bug。问题是这是否是编写以下功能的“正确方法”。
我想要的是运行一个php cron任务来检查博客中的帖子数量是否发生了变化,如果是这样的话 - 删除主页缓存的html。
我可以使用$
插件来设置php cron任务。我需要的是创建一个全局变量的函数,它将存储在帖子数量的某个位置(我使用了wp_options表),每次都要询问服务器当前的帖子数量。如果存在差异,则清除缓存。以下是我最终编写的功能。它是否有意义,或者我应该做些什么不同(/更好?)
WP Crontrol
答案 0 :(得分:2)
首先回答你的问题,我将字符串“已发布帖子的数量”提取为常量,类似于OPTION_KEY。 我还会使它更简洁和数据库-y,并带有前缀,以防止冲突。类似'npdhc:number_posts'。
回答你没有问过的问题:我不认为帖子的数量是决定破坏缓存的最佳方式。 从理论上讲,你可以进入边缘条件,你发布一个帖子并删除另一个帖子,缓存不会更新。
更正确,也更简单的编码,只使用上一篇文章的修改时间(我认为它是$post_modified_gmt
但不确定)
答案 1 :(得分:1)
查看强>
你的代码是一个很好的黑客清理缓存,但它毕竟是一个黑客攻击,我不会在生产环境中使用它。
原因是 -
post_publish
等事件的功能。<强>解决方案强>
现在回答你的问题,我会使用动作挂钩。 https://developer.wordpress.org/reference/functions/add_action/
function clearCacheOnStateChange( $new_status, $old_status, $post ) {
if ( $new_status != $old_status ) {
unlink(dirname(__FILE__) . "/wp-content/cache/supercache/sitename.com/" . 'index.html.gz');
}
}
add_action( 'transition_post_status', 'clearCacheOnStateChange', 10, 3);