Как использовать WP-Cron для автоматизации задач в WordPress

Что такое WP-Cron и зачем он нужен в WordPress?

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

Диагностика проблем с WP-Cron

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

  • WP-Cron отключён (define('DISABLE_WP_CRON', true) в wp-config.php).
  • Плохой трафик на сайт — WP-Cron запускается при посещении сайта, если посетителей мало, задачи не выполняются вовремя.
  • Ошибки в коде запланированных задач.
  • Конфликты с плагинами, блокирующими запросы.

Проверить состояние WP-Cron можно, вызвав в браузере URL https://site.com/wp-cron.php?doing_wp_cron — при нормальной работе должна происходить перезапуск задач без ошибок.

Пошаговое решение: как правильно настроить и использовать WP-Cron

1. Проверка и активация WP-Cron

Убедитесь, что в файле wp-config.php нет строки define('DISABLE_WP_CRON', true); или она закомментирована. Если планируется использовать системный cron, отключать WP-Cron можно, но с организацией вызовов вручную.

2. Регистрация собственной задачи

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

function wplite_schedule_hourly_event() {
    if (!wp_next_scheduled('wplite_hourly_cleanup')) {
        wp_schedule_event(time(), 'hourly', 'wplite_hourly_cleanup');
    }
}
add_action('wp', 'wplite_schedule_hourly_event');

function wplite_cleanup_old_drafts() {
    global $wpdb;
    $days = 30; // удалять черновики старше 30 дней
    $sql = $wpdb->prepare(
        "DELETE FROM $wpdb->posts WHERE post_status = 'draft' AND post_modified < NOW() - INTERVAL %d DAY",
        $days
    );
    $wpdb->query($sql);
}
add_action('wplite_hourly_cleanup', 'wplite_cleanup_old_drafts');

3. Использование системного cron для повышения надёжности

Если сайт имеет низкий трафик, рекомендуем отключить WP-Cron и настроить системный cron:

  • Добавьте в wp-config.php строку: define('DISABLE_WP_CRON', true);
  • Настройте системный cron на сервере (пример для Linux):
*/15 * * * * wget -q -O - https://site.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
<

Это вызовет WP-Cron каждые 15 минут, обеспечив регулярное выполнение задач.

Как проверить, что WP-Cron работает корректно

  • Перейдите на URL https://site.com/wp-cron.php?doing_wp_cron — не должно быть ошибок.
  • С помощью плагина WP Crontrol посмотрите список запланированных событий и дату следующего запуска.
  • Добавьте тестовую задачу с логированием и проверьте появление записей в логах.

Частые ошибки при работе с WP-Cron и их исправление

  • Задачи не запускаются — проверьте, не отключён ли WP-Cron (DISABLE_WP_CRON), и наличие посещений сайта.
  • Дублирующиеся задачи — убедитесь, что wp_next_scheduled корректно проверяет существование задачи перед планированием.
  • Ошибки в callback функции — используйте error_log или WP_DEBUG для отладки.
  • Проблемы с правами доступа — системный cron может не иметь доступа к wp-cron.php, проверьте права и URL.

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

  • Используйте nonce и проверку прав в callback-функциях, если они вызываются по REST или AJAX.
  • Не перегружайте WP-Cron слишком частыми задачами — выбирайте разумные интервалы.
  • Для ресурсоёмких операций используйте асинхронные вызовы или внешние очереди.
  • Плагины, как Clearfy Pro, могут помочь оптимизировать работу WP-Cron и очистку базы от лишних задач.

Сравнение вариантов запуска WP-Cron

МетодПлюсыМинусы
Встроенный WP-CronНе требует настройки сервера, легко использоватьЗависит от посещаемости сайта, не всегда точный тайминг
Системный cronТочный запуск по расписанию, не зависит от трафикаТребует доступа к серверу, настройка сложнее
Как использовать REST API в WordPress для создания кастомных приложений
22.11.2025
Как решить проблему неработающих скриптов в WordPress
16.02.2026
Как автоматизировать удаление неактивных пользователей в WordPress
28.04.2026
Использование WooCommerce хуков для расширения логики оформления заказа
18.04.2026
Как удалить неиспользуемые атрибуты продуктов WooCommerce через код
13.07.2026