当前位置: 首页>>技术教程>>正文


改变WordPress Auto-Updates插件的频率

webfans 技术教程 , , , 去评论

问题描述

根据我对WordPress如何更新核心和插件的理解,它每12小时就会消失并寻找更新。那个时间什么时候开始?初次安装12小时?我问这个是因为使用插件auto-update过滤器add_filter( 'auto_update_plugin' );理论上只允许插件在特定时间之间更新,但如果某个时间不属于那个12小时窗口那么插件将永远不会更新。

因此,在我的标题中留下问题是如何改变WordPress寻找更新的频率或如何指定何时到auto-update的特定时间?

对于那些感兴趣的人,这里是我一直在搞乱的过滤器,检查是否是星期一 – 星期五上午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' );

编辑作为一个简洁的旁注,它看起来像每次插件更新,多个插件更新,多次运行的过滤器运行此过滤器

最佳解决方案

你是对的,Wordpress每12小时检查核心和插件的更新,但更好的方法是:如果上次更新超过12小时,它会检查更新。

12小时的设置在wp-includes/update.php中进行了硬编码

最后更新的日期存储在wp_options表中,选项包括:

_site_transient_update_core
_site_transient_update_plugins
_site_transient_update_themes

因为这种检查不会在12小时之后发生,而是下次满足条件(至少12小时已经过去),那么您将不会错过更新。

次佳解决方案

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

从逻辑上讲,初始计划将从首次运行时开始计时。由于wp-cron实现(不是真正的cron并且通过站点访问而不是服务器时钟进行三重操作),每当实际wp-cron触发超过其到期时间时,它也将是”drift”。

插件更新检查也会在某些管理区域中更频繁地触发,例如插件列表(这样您就不太可能查看陈旧信息)。

在我的头顶,我不太看到将它放入特定时间走廊的优雅方式。改变时间表非常容易,因为漂移不是很明显。

如果这是任何关键的麻烦要求,那么最好使用真实服务器cron和外部工具进行实际更新,例如wp-cli更新功能或通过Composer管理插件。

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2069.html,转载请务必附带本地址声明。