WordPress - wp_schedule_event запускается два раза - PullRequest
0 голосов
/ 28 октября 2019

Я запускаю свой пользовательский сценарий через WP Cron.

/**
 * Plugin activation function
 */
function mcsPEventsActivation()
{
    // Schedule cron
    if (! wp_next_scheduled('mcs_populate_cron_hook')) {
        // Log cron job hook
        if (function_exists('mcsWriteLog')) {
            mcsWriteLog('mcs_populate_cron_hook cron job starting now');
        }
        wp_schedule_event(time(), 'ten_minutes', 'mcs_populate_cron_hook');
    }
}
register_activation_hook(__FILE__, 'mcsPEventsActivation');
// Add custom action to execute code.
add_action("mcs_populate_cron_hook", "mcsPopulateScrappedData", 12);

У меня есть параметр "повторения", настроенный для пользовательского расписания, т. Е. "Ten_minutes."

Я знаю, что могу запустить этозапланировать задание на определенное время, установив параметр "timestamp", но я хочу, чтобы это задание по расписанию выполнялось только с 6:00 до 8:00

Как я могу это сделать?

1 Ответ

0 голосов
/ 28 октября 2019

Чтобы выполнить свою задачу, вы можете изменить действие расписания cron, которое вы зарегистрировали в хуке активации плагина. Его срабатывает только один раз во время активации плагина. Вы можете сделать это следующим образом: проверять каждую загрузку с заданным интервалом времени и планировать событие cron -

/**
 * Plugin Init function
 */
function mcsPEventsActivation()
{
    $now = new DateTime();
    $begin = new DateTime('6:00');
    $end = new DateTime('8:00');

    if ($now >= $begin && $now <= $end){
        // Schedule cron
        if (! wp_next_scheduled('mcs_populate_cron_hook')) {
            // Log cron job hook
            if (function_exists('mcsWriteLog')) {
                mcsWriteLog('mcs_populate_cron_hook cron job starting now');
            }
            wp_schedule_event(time(), 'ten_minutes', 'mcs_populate_cron_hook');
        }
    } else {
        if (wp_next_scheduled('mcs_populate_cron_hook')) {
            $timestamp = wp_next_scheduled( 'mcs_populate_cron_hook' );
            wp_unschedule_event( $timestamp, 'mcs_populate_cron_hook' );
            wp_clear_scheduled_hook( 'mcs_populate_cron_hook' );
        }
    }
}
add_action( 'init', 'mcsPEventsActivation', 99 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...