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

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

Что такое WP-Cron и почему его иногда недостаточно

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

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

Отключение стандартного WP-Cron и настройка системного cron

Деактивация WP-Cron в WordPress

Для отключения встроенного WP-Cron откройте файл wp-config.php в корне вашего сайта и добавьте следующую строку, желательно перед строкой /* That's all, stop editing! Happy blogging. */:

define('DISABLE_WP_CRON', true);

Это отключит автоматический запуск cron-задач при загрузке страниц.

Настройка системного cron на сервере

Теперь необходимо настроить системный cron, который будет запускать WordPress cron через curl или wget. В Linux-системах используйте команду crontab -e для редактирования crontab.

Добавьте следующую строку, которая будет запускать cron каждые 5 минут:

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

Или с помощью wget:

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

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

Создание собственной отложенной задачи в WordPress с префиксом yelly

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

Регистрация события

Добавьте следующий код в файл functions.php вашей темы или в файл кастомного плагина:

function yelly_schedule_daily_cleanup() {
    if (!wp_next_scheduled('yelly_daily_cleanup_event')) {
        wp_schedule_event(time(), 'daily', 'yelly_daily_cleanup_event');
    }
}
add_action('wp', 'yelly_schedule_daily_cleanup');

Этот код проверяет, запланировано ли событие, и если нет — регистрирует его на ежедневный запуск.

Обработка события

Теперь создадим функцию, которая будет вызываться при срабатывании cron:

function yelly_do_daily_cleanup() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'yelly_custom_data';

    $deleted = $wpdb->query("DELETE FROM $table_name WHERE date < NOW() - INTERVAL 30 DAY");

    if ($deleted !== false) {
        error_log("[Yelly] Daily cleanup: удалено записей - " . $deleted);
    } else {
        error_log("[Yelly] Daily cleanup: ошибка при удалении данных");
    }
}
add_action('yelly_daily_cleanup_event', 'yelly_do_daily_cleanup');

В данном примере мы удаляем записи старше 30 дней из кастомной таблицы yelly_custom_data. Это полезная практика для поддержания базы в актуальном состоянии.

Как проверить и отладить работу cron-задач в WordPress

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

Дополнительные советы по оптимизации и безопасности

Защита вызова wp-cron.php

Чтобы предотвратить несанкционированный запуск cron из посторонних источников, можно добавить проверку секретного ключа в URL. Например, измените команду cron на сервере:

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

А в файле wp-cron.php или в фильтрах вашего сайта проверяйте наличие и корректность этого ключа. Это повысит безопасность.

Не перегружайте cron тяжелыми задачами

Если задача занимает много времени или ресурсов, лучше разбить ее на несколько меньших или запускать реже. WP-Cron не предназначен для выполнения сложных процессов в реальном времени.

Заключение

Отложенный запуск задач — важный инструмент для эффективного управления сайтом на WordPress. Отключение стандартного WP-Cron и переход на системный cron позволяет добиться более стабильной и точной работы. Создание собственных cron-задач с префиксом yelly_ помогает структурировать код и избегать конфликтов с другими плагинами и темами.

Используйте приведенные примеры для реализации своих автоматизаций и улучшения производительности сайта без лишних плагинов.

Как использовать метаданные для оптимизации WordPress
13.01.2026
Как удалить соседние символы в URL WordPress для улучшения SEO и удобства
16.01.2026
Как создать уникальные метаполя для постов в WordPress: практические примеры и код
24.01.2026
Как избежать проблемы при удалённой работе с WordPress через FTP
07.12.2025
Как удалить неиспользуемые типы постов в WordPress с помощью кода
07.02.2026