Как сделать отложенный запуск задач в WordPress без стандартного WP-Cron

WordPress использует собственный механизм планировщика задач — WP-Cron, который запускается при заходе посетителя на сайт. Это удобное решение, но оно не всегда надежно, особенно на сайтах с низкой посещаемостью или при необходимости точного времени запуска задач. В этой статье разберём, как организовать отложенный запуск задач в WordPress без стандартного WP-Cron, используя системные cron-задания и собственные функции.

Почему стандартный WP-Cron не всегда подходит

WP-Cron запускается только при обращении к сайту, что приводит к следующим проблемам:

  • Задержки в выполнении задач — если нет посетителей, задачи не запускаются вовремя.
  • Нагрузки при пиках трафика — при большом количестве посетителей одновременно WP-Cron запускается много раз.
  • Отсутствие контроля над точным временем запуска задач.

Поэтому для стабильной работы периодических задач лучше использовать системный cron и отключить WP-Cron.

Как отключить WP-Cron и настроить системный cron на сервере

Для отключения WP-Cron откройте файл wp-config.php и добавьте строку:

define('DISABLE_WP_CRON', true);

Это отключит автоматический запуск WP-Cron при заходе на сайт.

Далее нужно настроить системный cron на сервере (Linux). Выполните команду crontab -e и добавьте задачу, которая будет запускать WP-Cron по расписанию, например, раз в 5 минут:

*/5 * * * * wget -q -O - https://yourdomain.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Или, если доступ к wget ограничен, можно использовать curl:

*/5 * * * * curl -s https://yourdomain.ru/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Так системный cron будет запускать задачи WordPress регулярно, независимо от посещаемости сайта.

Как создать собственные задачи с точным расписанием

WordPress позволяет создавать собственные события с помощью функций wp_schedule_event и add_action. Рассмотрим пример создания задачи, которая будет выполняться каждый час.

Добавление кастомного интервала

По умолчанию WordPress поддерживает только несколько интервалов (час, двенадцать часов, день). Если нужно другое расписание, можно добавить свой интервал:

function wpmark_cron_custom_intervals($schedules) {
    if (!isset($schedules['every_ten_minutes'])) {
        $schedules['every_ten_minutes'] = array(
            'interval' => 600, // 10 минут в секундах
            'display' => __('Каждые 10 минут')
        );
    }
    return $schedules;
}
add_filter('cron_schedules', 'wpmark_cron_custom_intervals');

Регистрация и запуск задачи

Теперь создадим функцию для задачи и зарегистрируем событие:

function wpmark_do_something() {
    // Пример: очистка временных данных
    global $wpdb;
    $table = $wpdb->prefix . 'temporary_data';
    $wpdb->query("DELETE FROM $table WHERE expire < NOW()");
}
add_action('wpmark_hourly_event', 'wpmark_do_something');

if (!wp_next_scheduled('wpmark_hourly_event')) {
    wp_schedule_event(time(), 'hourly', 'wpmark_hourly_event');
}

Таким образом, функция wpmark_do_something будет вызываться каждый час.

Как вручную запускать задачи из админки с плагином WPRemark

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

Преимущества использования WPRemark:

  • Удобный интерфейс для управления задачами.
  • Возможность запуска задач вручную при необходимости.
  • Отслеживание истории и статуса выполнения.

Установка проста: скачайте плагин с официального сайта и активируйте через консоль WordPress.

Отладка и мониторинг cron-задач

Очень важно контролировать выполнение cron-задач, чтобы своевременно выявлять ошибки. Для этого можно использовать следующие методы:

Логи выполнения задач

Добавьте в функцию задачи запись в лог-файл, например:

function wpmark_do_something() {
    $log_file = WP_CONTENT_DIR . '/wpmark-cron.log';
    file_put_contents($log_file, date('Y-m-d H:i:s') . " - Задача выполнена\n", FILE_APPEND);
    // остальной код задачи
}

Плагин WP Crontrol

Плагин WP Crontrol позволяет просматривать, редактировать, запускать и удалять cron-события через админку. Это отличный инструмент для отладки.

Выводы и рекомендации

Использование системного cron вместо стандартного WP-Cron значительно повышает надежность и точность выполнения периодических задач на WordPress. Это особенно важно для сайтов с низкой посещаемостью или с критически важными задачами, например, отправка рассылок, генерация отчетов или очистка кэша.

Реализуйте следующие шаги:

  • Отключите WP-Cron через DISABLE_WP_CRON.
  • Настройте системный cron на сервере для регулярного запуска wp-cron.php.
  • Создавайте собственные задачи с нужными интервалами.
  • Используйте инструменты для мониторинга и отладки запуска задач.

Для упрощения управления задачами можете использовать плагин WPRemark.

Как сделать отложенный запуск задач в WordPress без стандартного WP-Cron
29.12.2025
Как создать автоматический заголовок для постов в WordPress с помощью кода и плагинов
05.03.2026
Как создать собственный шорткод с параметрами в WordPress: практическое руководство
21.01.2026
Как автоматизировать управление ролями и правами в WordPress
25.01.2026
Как удалить и заблокировать загрузочные файлы в WordPress
05.02.2026