将WordPress自动更新计划为仅在工作时间运行

时间:2015-06-05 作者:Darren

我们已经打开了WordPress自动更新(yey!),但是,为了以防万一,我们只希望在白天(例如09:00-17:30)运行自动更新。

我们禁用了“on init”WP Cron,并且每10分钟从服务器crontab调用一次。

如何调整自动更新,以便在这些时间内运行所有更新?我已经查看了WP Cron的挂钩,但有点迷路了。

此外,是否有一个钩子在自动更新完成后触发?我们的代码是源代码管理的,我正在寻找在更新后将新分支“自动提交”到代码中的方法(而不必手动执行)。

(重复问题并没有为钩子的检查提供任何指导-只是建议编辑数据库-它还讨论了“加载”启动WP Cron,而不是在专用Cron上运行)

干杯Darren

3 个回复
SO网友:Ben Cole

这一点实际上非常简单;将此添加到您的wp配置中。php文件和所有自动更新将在指定时间之外被阻止:

// Suspend updates when outside of business hours, 9:00 AM to 5:30 PM
$updates_suspended = (date(\'Hi\') < 0900 || date(\'Hi\') > 1730);

define( \'AUTOMATIC_UPDATER_DISABLED\', $updates_suspended );
您还可以使用these other constants and filters 控制允许运行哪些自动更新(如果需要使其更具体)。

确保使用server timezone 当你设置这个的时候。功能date() 可能配置为使用不同于本地时区的时区。

SO网友:jonathan

基于;“BenCole”;答复:

date()受运行时时区更改的影响,这可能导致日期/时间显示不正确。最好使用WordPress native current\\u datetime(),即;从设置中检索当前时间作为时区为的对象;。

        $current_time = current_datetime()->format( \'Hi\' );

        $disable_updater = ( $current_time > 900 || $current_time < 1730 );

        define( \'AUTOMATIC_UPDATER_DISABLED\', $disable_updater );

SO网友:laurent avril

// An example to allow plugin auto update between "friday 6pm et monday 12am" :
$updates_suspended = !((date(\'N\') == 5 && date(\'G\') > 17) || in_array(date(\'N\'), array(6,7)) || (date(\'N\') == 1 && date(\'G\') < 12)(;
define( \'AUTOMATIC_UPDATER_DISABLED\', $updates_suspended );
date(\'N\')的值是一个整数,它是一周中的一天(1到周一,5到周五)。date(\'G\')的值是一个整数,它是一天中的一小时。如果您只想处理一天中的一小时,请仅使用date(\'G\')示例:要允许每天仅在晚上11点之后和早上6点之前自动更新插件:

$updates_suspended = !((date(\'G\') < 6 || date(\'G\') > 22));
define( \'AUTOMATIC_UPDATER_DISABLED\', $updates_suspended );
此代码进入wp config。php,它已经过测试,可以正常工作。

有关日期的更多详细信息,请参见:https://www.php.net/manual/fr/function.date.php

结束

相关推荐

Schedule cron don't work

我试着设置一个cronjob。它似乎运行le_schedule 功能,但不是le_do_this 作用我还尝试了一些cronjob插件,有些说它可以运行,有些说它失败了。在这种情况下,它将尝试获取一个文件并保存它,但它没有。为什么这不起作用?add_action( \'wp\', \'le_schedule\' ); add_action( \'le_event\', \'le_do_this\' ); function le_schedule() { if (