Автоматическое удаление старых записей через CRON в WordPress

В WordPress нередко возникает задача автоматического удаления старого контента, например, устаревших постов, новостей или других записей, которые больше не актуальны. В этой статье мы подробно разберем, как реализовать автоматическое удаление старых записей с помощью CRON задач WordPress, чтобы освободить место и поддерживать актуальность сайта.

Что такое WP-Cron и почему его использовать

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

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

Как определить, какие записи удалять автоматически

Перед тем как писать код, нужно чётко определить критерии удаления. Например:

  • Удалять все записи старше 30 дней
  • Удалять только записи определённого типа (посты, кастомные типы)
  • Удалять записи с определённым статусом (опубликованные, черновики)

В примерах ниже мы будем удалять посты старше 30 дней.

Пример кода для автоматического удаления старых записей

Создадим функцию wpmanual_delete_old_posts, которая выполнит выборку и удаление записей по условию, а затем подключим её к планировщику WP-Cron.

function wpmanual_delete_old_posts() {
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'date_query'     => array(
            array(
                'column' => 'post_date',
                'before' => '30 days ago',
            ),
        ),
        'fields'         => 'ids',
        'posts_per_page' => -1,
    );
    $old_posts = get_posts($args);
    if (!empty($old_posts)) {
        foreach ($old_posts as $post_id) {
            wp_delete_post($post_id, true); // true — удаление без перемещения в корзину
        }
    }
}

Эта функция получает ID всех опубликованных постов старше 30 дней и удаляет их без возможности восстановления из корзины.

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

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

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

add_action('wpmanual_daily_delete_old_posts', 'wpmanual_delete_old_posts');

Данный код проверяет, запланирована ли уже задача на удаление старых постов, и если нет — создает её с ежедневным интервалом. Затем он привязывает запуск функции удаления к этому событию.

Как удалить CRON задачу при деактивации плагина или темы

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

function wpmanual_clear_scheduled_old_posts_deletion() {
    $timestamp = wp_next_scheduled('wpmanual_daily_delete_old_posts');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpmanual_daily_delete_old_posts');
    }
}

Эту функцию нужно вызвать при деактивации плагина или темы, например через хук register_deactivation_hook.

Оптимизация и безопасность процесса удаления

Удаление большого количества записей за один проход может нагрузить сервер. Чтобы избежать этого, можно разбивать удаление на части, например, удалять по 20 записей за раз и запускать задачу чаще, например, каждые 6 часов.

Также важно помнить про безопасность: функция wp_delete_post автоматически обрабатывает все необходимые очистки, включая удаление связанных метаданных и таксономий.

Плагины для управления CRON и автоматизацией

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

  • WP Crontrol — позволяет просматривать, редактировать и запускать CRON задачи вручную.
  • Clearfy Pro — расширяет возможности оптимизации сайта, включая управление задачами и очистку базы данных.

Итоги

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

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

Как проверить и использовать активные CRON задачи в WordPress
05.02.2026
Как сделать автоматическое резервное копирование WordPress: лучшие методы и примеры кода
25.11.2025
WooCommerce: как автоматически удалять неактивные товары через CRON
11.06.2026
WooCommerce: запрет создания новых заказов по предоплаченным товарам
30.04.2026
WordPress: как сделать уникальные отзывы с помощью плагинов и кода
18.11.2025