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

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

Почему важно удалять старые посты автоматически

Удаление устаревших записей помогает:

  • Снизить нагрузку на базу данных, ускорив работу сайта.
  • Поддерживать актуальность контента, что важно для SEO и пользовательского опыта.
  • Экономить место на сервере, особенно при большом количестве медиафайлов.

Ручное удаление постов — рутинная и трудоемкая задача, особенно если публикаций много. Автоматизация процесса через кастомный плагин или функцию — идеальное решение.

Реализация автоматического удаления постов по дате

Рассмотрим, как сделать автоматическое удаление записей старше определенного числа дней с помощью WP Cron и кастомной функции.

1. Создаем функцию удаления старых постов

Функция будет удалять записи, опубликованные более 180 дней назад. При желании вы можете изменить этот параметр.

function wpmarket_delete_old_posts() {
    global $wpdb;
    $days = 180; // Количество дней для удаления
    $date_threshold = date('Y-m-d H:i:s', strtotime("-{$days} days"));

    // Получаем ID постов старше threshold
    $old_posts = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'post' AND post_status = 'publish' AND post_date < %s",
        $date_threshold
    ));

    if (!empty($old_posts)) {
        foreach ($old_posts as $post_id) {
            wp_delete_post($post_id, true); // Полное удаление без помещения в корзину
        }
    }
}

Эта функция выбирает все опубликованные посты старше 180 дней и удаляет их навсегда.

2. Создаем WP Cron задачу для регулярного запуска функции

Чтобы удаление происходило автоматически, добавим расписание и повесим на него функцию.

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

add_action('wpmarket_delete_old_posts_event', 'wpmarket_delete_old_posts');

Код выполняет следующие задачи:

  • Регистрирует ежедневное событие 'wpmarket_delete_old_posts_event'.
  • Подключает функцию удаления постов к этому событию.

Как отменить расписание при деактивации плагина

Если вы реализуете этот код в виде плагина, важно очищать расписание при деактивации:

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

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

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

  • Auto Delete Posts — позволяет настроить удаление постов по различным параметрам, включая дату.
  • Post Expirator — добавляет возможность задать срок жизни записи с автоматическим удалением или изменением статуса.
  • Clearfy Pro — расширенный набор оптимизаций, в том числе управление устаревшим контентом.

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

Дополнительные советы по управлению устаревшим контентом

1. Архивирование вместо удаления

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

2. Оптимизация базы данных

После массового удаления постов полезно выполнить оптимизацию таблиц базы данных. Для этого подойдут плагины типа Clearfy Pro или WP-CLI команда wp db optimize.

3. Бэкап перед удалением

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

Итоги

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

Если хотите быстро внедрить оптимизацию и управление контентом, советуем посмотреть Clearfy Pro — мощный инструмент для комплексной оптимизации WordPress.

Как автоматически удалить вариации товаров WooCommerce по заданным условиям
26.05.2026
Как автоматически удалять записи по статусу в WordPress
12.04.2026
Как оптимизировать базу данных WordPress для ускорения сайта
19.11.2025
Как реализовать автоматическое отключение неиспользуемых плагинов WordPress
28.01.2026
Как удалить или скрыть страницу в WordPress без удаления из базы
20.01.2026