1. Что такое Cron вообще?
Cron — это механизм, который позволяет запускать задачи по расписанию. Например:
- отправка email-рассылки каждое утро,
- проверка обновлений раз в час,
- очистка временных файлов раз в сутки.
В WordPress тоже есть свой механизм — WP-Cron, но он работает иначе, чем настоящий системный Cron на сервере.
2. WP-Cron: встроенный планировщик WordPress
Как работает
- WP-Cron запускается не по времени, а при загрузке сайта пользователем.
- Когда кто-то открывает страницу, WordPress проверяет: есть ли запланированные задачи? Если да — выполняет их.
Преимущества
- Работает «из коробки», не требует доступа к серверу.
- Подходит для небольших сайтов с низкой нагрузкой.
Недостатки
- Если сайт редко посещают — задачи могут не выполняться вовремя.
- При большом трафике — наоборот, WP-Cron может запускаться слишком часто и нагружать сервер.
- Менее предсказуемый механизм, чем системный Cron.
3. Системный Cron: планировщик на уровне сервера
Как работает
- Это стандартный инструмент Linux/Unix.
- Задачи выполняются строго по расписанию, независимо от посещаемости сайта.
Преимущества
- Надёжность и точность выполнения задач.
- Снижение нагрузки на WordPress — задачи не зависят от визитов пользователей.
- Возможность задавать гибкие расписания (каждую минуту, по понедельникам и т. д.).
Недостатки
- Требуется доступ к серверу (SSH, панель управления).
- Нужно уметь прописывать cron-задания.
4. Когда использовать WP-Cron, а когда системный Cron?
Подходит WP-Cron
- Маленький блог или лендинг.
- Сайт редко посещают и задачи не критичны (например, проверка обновлений раз в сутки).
- Нет доступа к серверу (виртуальный хостинг).
Подходит системный Cron
- Интернет-магазины (WooCommerce) — задачи должны выполняться вовремя (отправка писем, обновление акций).
- Сайты с большим трафиком.
- Критичные задачи (резервное копирование, синхронизация с API).
5. Как включить и настроить
WP-Cron по умолчанию
Ничего делать не нужно — WordPress сам использует WP-Cron.
Использование системного Cron вместо WP-Cron
- Отключаем WP-Cron
Вwp-config.phpдобавляем:
define('DISABLE_WP_CRON', true);
- Создаём cron-задание на сервере
Например, выполнять каждые 5 минут:
*/5 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Или через curl:
*/5 * * * * curl -s https://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
- Через панель хостинга
На shared-хостинге (ISPmanager, cPanel, Plesk) обычно есть «Планировщик заданий (Cron jobs)». Там можно задать запускwp-cron.phpкаждые 5 минут.
6. Примеры для разработчиков
Добавление собственной задачи
if ( ! wp_next_scheduled( 'my_custom_event' ) ) {
wp_schedule_event( time(), 'hourly', 'my_custom_event' );
}
add_action( 'my_custom_event', 'my_custom_function' );
function my_custom_function() {
// например, очистка кеша или синхронизация с API
}
Удаление задачи
$timestamp = wp_next_scheduled( 'my_custom_event' );
wp_unschedule_event( $timestamp, 'my_custom_event' );
7. Подводные камни и советы
- WP-Cron может запускаться несколько раз параллельно при высокой нагрузке → дублирование задач.
- Системный Cron требует внимательности: не ставьте слишком частый интервал (например, каждую минуту без нужды).
- Если используете кеш или Cloudflare, убедитесь, что запросы к
wp-cron.phpпроходят (иначе задачи не будут выполняться). - Для WooCommerce рекомендуется системный Cron — иначе могут задерживаться письма о заказах.
8. Актуальные плагины для работы с Cron
- WP Crontrol — просмотр и управление задачами WP-Cron.
- Advanced Cron Manager — удобный интерфейс для разработчиков.
- WP Crontrol CLI — управление через WP-CLI.
9. Резюме
| Вариант | Плюсы | Минусы | Кому подходит |
|---|---|---|---|
| WP-Cron | Работает «из коробки», не требует доступа к серверу | Зависит от посещаемости, может перегружать сайт | Новичкам, маленьким сайтам |
| Системный Cron | Точный, надёжный, разгружает WP | Требует доступа к серверу и настроек | Интернет-магазинам, крупным сайтам, разработчикам |