Как создать автоматические задачи в WordPress с помощью WP-Cron и плагинов

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

Что такое WP-Cron и как он работает в WordPress

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

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

Основные моменты работы WP-Cron:

  • Запуск при посещении сайта;
  • Задания хранятся в базе данных;
  • Возможность создавать пользовательские расписания и задачи;
  • Не подходит для точного времени выполнения в высоконагруженных проектах без донастройки.

Как создать собственную WP-Cron задачу в WordPress

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

  1. Добавить расписание задачи, если нужно нестандартное время;
  2. Зарегистрировать задачу при активации темы или плагина;
  3. Создать функцию, которую будет выполнять задача;
  4. Удалить задачу при деактивации.

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

Если стандартных интервалов недостаточно, добавим своё, например, каждые 12 часов:

function wptasks_cron_schedules($schedules) {
    if (!isset($schedules['twelve_hours'])) {
        $schedules['twelve_hours'] = array(
            'interval' => 12 * 60 * 60, // 12 часов в секундах
            'display' => __('Каждые 12 часов', 'wptasks')
        );
    }
    return $schedules;
}
add_filter('cron_schedules', 'wptasks_cron_schedules');

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

Зарегистрируем задачу при инициализации, чтобы она запускалась ежедневно:

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

Функция задачи

Создадим функцию, которая очищает устаревшие временные опции (пример):

function wptasks_handle_daily_cleanup() {
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout_%' AND option_value < UNIX_TIMESTAMP()");
}
add_action('wptasks_daily_cleanup', 'wptasks_handle_daily_cleanup');

Удаление задачи при деактивации

Чтобы избежать «мусорных» задач при деактивации темы или плагина, удалим расписание:

function wptasks_deactivate() {
    $timestamp = wp_next_scheduled('wptasks_daily_cleanup');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wptasks_daily_cleanup');
    }
}
register_deactivation_hook(__FILE__, 'wptasks_deactivate');

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

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

  • WP Crontrol — позволяет просматривать, запускать, добавлять и удалять WP-Cron задачи через админку.
  • Advanced Cron Manager — расширенный менеджер задач с поддержкой поиска и экспорта.
  • Clearfy Pro — в том числе помогает оптимизировать WP-Cron, отключая ненужные задачи и планируя критичные с точностью.

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

Практические примеры автоматизации задач с WP-Cron

Отправка еженедельной рассылки с новостями

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

function wptasks_send_weekly_newsletter() {
    $args = array(
        'posts_per_page' => 5,
        'date_query' => array(
            'after' => '1 week ago'
        )
    );
    $recent_posts = get_posts($args);

    $message = "Последние новости сайта:\n";
    foreach ($recent_posts as $post) {
        $message .= get_permalink($post) . ' - ' . $post->post_title . "\n";
    }

    wp_mail('subscriber@example.com', 'Еженедельная рассылка', $message);
}
add_action('wptasks_weekly_newsletter', 'wptasks_send_weekly_newsletter');

if (!wp_next_scheduled('wptasks_weekly_newsletter')) {
    wp_schedule_event(time(), 'weekly', 'wptasks_weekly_newsletter');
}

Регулярное обновление данных через REST API

Если ваш сайт получает данные с внешнего API, можно настроить автоматическую задачу для обновления информации:

function wptasks_update_external_data() {
    $response = wp_remote_get('https://api.example.com/data');
    if (is_wp_error($response)) {
        error_log('Ошибка получения данных API');
        return;
    }
    $data = json_decode(wp_remote_retrieve_body($response), true);
    if ($data) {
        update_option('wptasks_external_data', $data);
    }
}
add_action('wptasks_hourly_update', 'wptasks_update_external_data');

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

Оптимизация WP-Cron для снижения нагрузки и повышения надежности

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

  • Отключить WP-Cron и настроить системный cron на сервере для запуска wp-cron.php по расписанию. Это позволит запускать задачи точно и без зависимости от трафика.
  • Использовать плагины Clearfy Pro или WP Crontrol для контроля и оптимизации расписания задач.
  • Минимизировать количество задач и объединять мелкие задачи в одну, чтобы снизить нагрузку.

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

define('DISABLE_WP_CRON', true);

А системный cron на сервере настроить так (пример для запуска каждые 15 минут):

*/15 * * * * wget -q -O - https://ваш-сайт.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Заключение

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

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

Автоматическое отправление отчёта по email в WordPress с помощью WPRemark
03.04.2026
Автоматизация управления задачами в WordPress с WPTasks и Clearfy
20.03.2026
Как создать собственный breadcrumb в WordPress с поддержкой Schema.org
14.12.2025
Как создать автоматический импорт данных из JSON в WordPress
14.04.2026
Оптимизация UА в WordPress: снижение затрат на оплату услуг провайдеров
20.05.2025