Рассмотрим работу WordPress Cron (WP-Cron). Запланированные события в WordPress и всё, что с ними связанно. Примеры работы Wp-Cron!
Быстрая навигация по записе

Cron – это стандартная утилита UNIX для выполнения запланированных задач в определенное время, дату или через интервал.

Однако WordPress Cron немного отличается от стандартной утилиты, и поэтому, прежде чем углубляться в действия и процесс, вам необходимо понять, что такое Cron в WordPress и как он будет работать на вашем сайте.

Что такое WordPress Cron?

У WordPress есть своей Сron для работы с такими задачам, как проверка обновлений, планирование публикации, очистка корзины и многие другие. Все задания WordPress Cron обрабатываются через WP-Cron.

По умолчанию WordPress поддерживает следующие временные интервалы:

Можно добавить свой интервал, а для этого нужно отфильтровать cron_schedules. В качестве примера добавим тридцатисекундный интервал:

				
					/******************************************
 * Новый, тридцатисекундный интервал для WP-Cron
 *****************************************/

// Добавляем фильтр
add_filter( 'cron_schedules', 'wplb_cron_30s' );

// Описываем функцию
function wplb_cron_30s( $schedules ) { 
    $schedules['30_seconds'] = array(
        'interval' => 30,
        'display'  => esc_html__( 'Каждые 30 секунд' )
    );
    return $schedules;
}
				
			

Управление Cron задачами в WordPress

Для мониторинга, отладки и управления запланированными действиями в WordPress можно использовать командную строку (WordPress CLI).

А для подавляющего большинства пользователей и разработчиков будет достаточно плагина:

Не понимаю, как сверстать
Не понимаю, как сверстать

Несмотря на то, что плагин позволяет создавать задания через интерфейс, мы его используем только для мониторинга и отладки.

Создание Cron задач в WordPress (WP-Cron)

Самый надежный и простой метод:

				
					// Описываем функцию деактивации
function wplb_deactivate() {
    // Убираем задачу 'wplb_cron'
    wp_clear_scheduled_hook( 'wplb_cron' );
}

// Добавляем основное событие.
add_action('init', function() {

    // Создаём событие нашего планировщика
    add_action( 'wplb_cron', 'wplb_run_cron' );

    // Регистрируем событе на случай дективации
    register_deactivation_hook( __FILE__, 'wplb_deactivate' );

    // Добавляем наше событие в WP-Cron 
    if (! wp_next_scheduled ( 'wplb_cron' )) {
        wp_schedule_event( time(), '30_seconds', 'wplb_cron' );
    }

});

// Описываем функцию для планировщика
function wplb_run_cron() {
    // Функция будет выполняться 1 раз в тридцать секунд (Новый, тридцатисекундный интервал для WP-Cron мы добавили выше).
}
				
			
Человеко-понятное описание кода ?

Если активирована тема, в которую вставлен этот код и не существует запланированного действия с названием wplb_cron, то добавим wplb_cron. Функция wplb_run_cron будет выполняться каждые 30 секунд. В случае если пользователь сменил тему, то из планировщика убираем событие wplb_cron.

Если подумать, то всё достаточно просто, а если вы установили плагин WP Control, то вы увидите:

WordPress Cron (WP-Cron) – Планировщик заданий
WordPress Cron (WP-Cron) – Планировщик заданий

Одноразовые Cron задачи

В WordPress так же можно добавить событие, которое сработает всего один раз.

				
					// Создаём событие wplb_event
add_action( 'wplb_event', 'wplb_in_an_hour', 10, 3 );

// Описываем функцию для событие wplb_event
function wplb_in_an_hour( $arg1, $arg2, $arg3 ) {
    // Описание функции
}

// Добавляем событие wplb_event в планировщик (запустится через 1800 секунд от текущего времяни)
wp_schedule_single_event( time() + 1800, 'wplb_event', array( $arg1, $arg2, $arg3 ) );
				
			

Сами по себе одноразовые крон задачи используются редко, но стоит уточнить, что их очень удобно использовать в заданиях, запускаемых с определенным интервалом.

Пример из реальной практики

Вводные данные:

Задача:

Автоматизировать процесс.

Решение:

Использование WP-Cron, как ежедневное запланированное задание, которое в свою очередь создавало несколько одноразовых заданий (запускались по очереди) в зависимости от объема новых, полученных через API, данных.

Мы постарались изложить всю информацию максимально доступно, но если у вас все равно остались вопросы, вы можете смело их нам задать, и мы обязательно поможем!

Спасибо.

Оставить комментарий

Нужна помощь с WordPress WooCommerce плагинами темой оптимизацией ?

Упрощаем сложное, создаем впечатляющее!
100% без риска
Нет обязательств по найму
Бесплатная оценка
Давайте составим техническое задание!100% без рискаНет обязательств по наймуБесплатная оценка стоимости
Здравствуйте! Я асистент на основе искусственного интеллекта. Вы можете общаться со мной, как с человеком — задавайте вопросы, описывайте свои идеи и требования.

С удовольствием помогу вам составить техническое задание для вашего WordPress проекта.

Выберите подходящий вариант или опишите свою задачу в свободной форме, и я помогу вам составить четкий план действий, для оценки стоимости нашими разработчиками! 😊

Поможем вывести Ваш бизнес на новый уровень!

Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил

Добро пожаловать!

Авторизуйтесь, чтобы продолжить

или

* Если аккунта у Вас еще нет, то он будет создан автоматически