【问题标题】:Customizing the WP Schedule event自定义 WP Schedule 事件
【发布时间】:2012-12-15 17:04:04
【问题描述】:

专家,

目前在我的一个 wordpress 插件中,有一个按以下时间表运行的 cron。 wp_schedule_event(时间(),“每小时”,“w4pr_cron”); 我想将其更改为在特定时间范围内每 5 分钟运行一次。

例如如您所知,当前代码将在一天中每小时运行一次。 (一天运行 24 次)。 我希望它仅在早上 5:00 到早上 6:30(美国东部标准时间)之间每 5 分钟运行一次(一天运行 18 次)。

任何帮助表示赞赏!

谢谢 托马斯

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    您首先需要添加自定义 cron 计划,使其每 5 分钟运行一次

     // Add cron interval of 60 seconds
    function addCronMinutes($array) {
        $array['minute'] = array(
                'interval' => 60,
                'display' => 'Once a Minute',
        );
        return $array;
    }
    add_filter('cron_schedules','addCronMinutes');
    

    但是,为了只允许它在特定时间范围内运行而不会造成额外开销,您最好不要安排每个特定事件。

    另一种选择是将逻辑放入触发器中以仅在指定的时间范围内运行您的函数,但这会在 cron 每 5 分钟触发一次的高流量站点上造成额外的开销。

    【讨论】:

      【解决方案2】:

      首先创建一个自定义间隔,你可以找到更多关于这个here的信息。

       add_filter( 'cron_schedules', 'cron_add_5min' );
      
       function cron_add_5min( $schedules ) {
          $schedules['5min'] = array(
              'interval' => 5*60,
              'display' => __( 'Once every five minutes' )
          );
          return $schedules;
       }
      

      确保您已取消计划插件注册的事件:

      wp_unschedule_event( next_scheduled_event( 'w4pr_cron' ), 'w4pr_cron' );
      

      接下来安排一个具有此重复间隔的活动在凌晨 5 点开始:

      if( time() > strtotime( 'today 5:00' ) )
          wp_schedule_event( strtotime( 'tomorrow 5:00' ), '5min', 'w4pr_cron' );
      else
          wp_schedule_event( strtotime( 'today 5:00' ), '5min', 'w4pr_cron' );
      

      w4pr_cron 不是一个函数,而是一个附加了函数的钩子。因此,您要做的是确保如果时间戳不在您给定的时间间隔内,则在调用此挂钩时不会发生任何事情。所以在functions.php或在每次页面加载时都会看到它执行的地方,放:

      add_action( 'init', function() {
          $start = strtotime( 'today 5:00' );
          $end = strtotime( 'today 6:30' );
          if( !(time() > $start && time() < $end) ) remove_all_actions( 'w4pr_cron' );
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-05
        • 1970-01-01
        • 2017-04-09
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        相关资源
        最近更新 更多