根据我对WordPress如何更新核心和插件的理解,它每12小时就会更新一次。时间什么时候定?初始安装后12小时?我这样问是因为使用插件自动更新过滤器add_filter( \'auto_update_plugin\' );
从理论上讲,您只能允许插件在特定时间之间更新,但如果特定时间不在12小时内,插件将永远不会更新。
因此,在我的标题中留下了一个问题,即如何改变WordPress查找更新的频率,或者如何指定自动更新的特定时间?
对于那些感兴趣的人,这是我一直在使用的过滤器,检查是否是周一到周五上午8点到下午5点:
function maybe_update_plugins(){
date_default_timezone_set(\'Your Timezone Here\');
$localAssoc = localtime(time(), true);
$update = false;
/***
/* tm_wday[0] = Sunday
/* tm_wday[6] = Saturday
***/
if(
$localAssoc[\'tm_wday\'] > 0 && $localAssoc[\'tm_wday\'] < 6 &&
$localAssoc[\'tm_hour\'] > 7 && $localAssoc[\'tm_hour\'] < 17
){
$update = true;
}
return $update;
}
add_filter( \'auto_update_plugin\', \'maybe_update_plugins\' );
Edit 作为一个简洁的旁注,每次插件更新、多次插件更新、多次运行过滤器时,都会运行此过滤器
最合适的回答,由SO网友:LevanK 整理而成
没错,Wordpress每12小时检查一次核心和插件的更新,但更好的方法是:如果上次更新是在12小时前,它会检查更新。
12小时设置是硬编码的wp-includes/update.php
最后更新的日期存储在wp_options
表和选项包括:
_site_transient_update_core
_site_transient_update_plugins
_site_transient_update_themes
由于此检查不会在12小时后精确进行,而是在下次满足条件时(至少12小时过去了)进行,因此您不会错过更新。
SO网友:Rarst
相关职能wp_update_plugins()
和wp_maybe_auto_update()
连接到同名的wp cron事件,每天运行两次。
从逻辑上讲,初始计划将从第一次运行开始计时。由于wp-cron的实现(不是真正的cron,由站点访问而不是服务器时钟触发),每当实际wp-cron触发超过其到期时间时,它也会“漂移”。
插件更新检查在某些管理区域也会更频繁地触发,比如插件列表(这样您就不太可能看到过时的信息)。
在我的脑海中,我不太明白如何把它放入特定的时间走廊。改变时间表很容易,但不太能解释漂移。
如果这在某种程度上是misison的关键需求,那么最好使用真正的服务器cron和用于实际更新的外部工具来处理,例如wp cli更新功能或通过Composer管理插件。