При решении задач автоматизации процессов на сайте часто бывает нужно настроить wp_cron. До сих пор каждый раз вставлял функции wp_cron внутрь соответствующих классов. Но надоело 🙂

Думаю это лучше делать как подключаемый класс в форме сниппета. Скопировал, сделал класс типа class-cron.php, поменял префикс My на свой, где нужно чуть чуть поменял параметры и вперед.


<?php 
/**
* Setup wp_cron 
*/ 

class My_WP_Cron{
  function __construct() {
    add_filter( 'cron_schedules', array($this, 'add_schedule') );
    add_action('init', [$this, 'add_hook']);
  }

  /*
  * Регистрируем интервал для wp_cron в секундах 
  */
  function add_schedule( $schedules ) {
    $schedules['my_cron_worker'] = array( 'interval' => 60, 'display' => 'My Cron Worker' );
    return $schedules;
  }

  function add_hook(){
    if ( ! wp_next_scheduled( 'my_cron_worker_start' ) ) { 
      wp_schedule_event( time(), 'my_cron_worker', 'my_cron_worker_start' ); 
    }
  }
}
new My_WP_Cron;