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


17

根据我对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' );

编辑作为一个简洁的注解,每次插件更新,多次插件更新,多次运行该过滤器时,都确实会运行此过滤器

Answers:


10

没错,Wordpress每12小时检查一次核心和插件更新,但更好的写法是:如果最近一次更新超过12小时,它将检查更新。

12小时的设置很难理解 wp-includes/update.php

最近更新的日期存储在wp_options表中,选项为:

_site_transient_update_core
_site_transient_update_plugins
_site_transient_update_themes

由于此检查不会在12小时后准确进行,而是在下次满足条件(至少经过12小时)后才进行,因此您不会错过更新。


好的,因此,将答案和@Rarst放在一起,每次满足条件(听起来像每次查看页面或特定页面时的声音)都会触发测试,以查看上一次检查更新的时间,如果检查> = 12小时,那么运行自动更新。因此,使用过滤器实际上并没有机会之窗。
Howdy_McGee

5

相关功能wp_update_plugins()wp_maybe_auto_update()挂钩到同名的wp-cron事件,每天运行两次。

从逻辑上讲,初始计划将从第一次运行开始计时。由于wp-cron的实现(不是真正的cron,不是通过站点访问而不是服务器时钟触发的),只要实际的wp-cron触发时间超过了预定的时间,它也会“漂移”。

插件更新检查也会在某些管理区域(例如插件列表)中触发的频率更高(这样您就不太可能查看过时的信息)。

在我的头顶上,我不太清楚将其放入特定时间走廊的优雅方法。更改日程安排非常容易,无法完全解决漂移问题。

如果无论如何,这都是对关键性的要求,那么最好使用真正的服务器cron和用于实际更新的外部工具(例如wp-cli更新功能或通过Composer管理插件)来处理。


它不是关键任务,而是wp-cron仅触发某些管理页面浏览量还是正常页面浏览量?谢谢!
Howdy_McGee

1
@Howdy_McGee wp-cron几乎是由任何事件触发的(init钩子触发)
Rarst,2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.