更改WordPress自动更新插件的频率

时间:2014-08-12 作者:Howdy_McGee

根据我对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 作为一个简洁的旁注,每次插件更新、多次插件更新、多次运行过滤器时,都会运行此过滤器

2 个回复
最合适的回答,由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管理插件。

结束

相关推荐

How can I find plugins' slug?

我想知道如何才能找到插件的slug(slug=WordPress用来更新插件和确定哪些插件当前处于活动状态的内部名称)?它通常是插件的文件夹名,但如果插件没有文件夹,则是其文件名(如hello.php)。是否有其他例外情况?大小写字符重要吗</插件的slug是否可以与其文件夹名不同?如果有一个叫做hello的插件呢。php和另一个/您好。php/您好。php