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

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

Зачем нужно удалять старые посты в WordPress

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

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

  • Освободить место в базе данных.
  • Улучшить скорость загрузки страниц.
  • Поддерживать релевантность и актуальность контента.
  • Автоматизировать рутинные задачи по управлению сайтом.

Автоматическое удаление через крон-задачи WordPress (wp-cron)

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

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

function wpstart_delete_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'before' => date('Y-m-d', strtotime('-1 year')),
                'inclusive' => true,
            ),
        ),
        'post_type' => 'post',
        'post_status' => 'publish',
        '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 всех постов старше одного года и удаляет их безвозвратно.

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

Используем встроенный WordPress cron, чтобы запускать функцию автоматически, например, раз в неделю.

function wpstart_schedule_old_posts_deletion() {
    if (!wp_next_scheduled('wpstart_delete_old_posts_hook')) {
        wp_schedule_event(time(), 'weekly', 'wpstart_delete_old_posts_hook');
    }
}
add_action('wp', 'wpstart_schedule_old_posts_deletion');

add_action('wpstart_delete_old_posts_hook', 'wpstart_delete_old_posts');

Теперь задача будет запускаться раз в неделю и удалять устаревшие записи.

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

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

  • Bulk Delete — плагин с гибкими условиями удаления постов, страниц, пользовательских типов записей по дате, категории, меткам, статусу и другим параметрам.
  • WP Bulk Delete — удобный инструмент для массового удаления контента с возможностью планирования задач.

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

Пример настройки Bulk Delete для удаления постов старше 6 месяцев

1. Установите и активируйте плагин Bulk Delete.

2. Перейдите в раздел Bulk Delete > Delete Posts.

3. В настройках выберите условие «Delete posts older than» и укажите 6 месяцев.

4. Активируйте опцию автоматического удаления по расписанию.

Как избежать ошибок и потери важных данных

Удаление контента — рискованная операция, поэтому важно:

  • Перед удалением делать полные резервные копии сайта и базы данных.
  • Тестировать код и плагины на тестовом сервере.
  • Убедиться, что критичные записи исключены из удаления (например, через фильтрацию по категориям или меткам в функции).
  • Логировать удаление для последующего анализа.

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

function wpstart_delete_old_posts_safe() {
    $args = array(
        'date_query' => array(
            array('before' => date('Y-m-d', strtotime('-1 year')), 'inclusive' => true),
        ),
        'post_type' => 'post',
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1,
        'category__not_in' => array(1, 2), // исключить категории с ID 1 и 2
    );
    $old_posts = get_posts($args);
    if (!empty($old_posts)) {
        foreach ($old_posts as $post_id) {
            wp_delete_post($post_id, true);
        }
    }
}

Выводы и рекомендации

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

Для максимального контроля рекомендуем использовать кодовые решения с крон-задачами. Для простоты и быстрого старта — плагины Bulk Delete или WP Bulk Delete.

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

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

Как использовать WPRemark для удаления пустых мета данных в WordPress
31.01.2026
Как настроить автоматический импорт данных из Google Sheets в WordPress с примерами кода
15.02.2026
Как сделать автоматический сбор и отправку логов в WordPress
11.02.2026
Как удалить версию WordPress из HTML кода для безопасности сайта
10.11.2025
Как правильно удалить плагин в WordPress без остаточных данных
30.12.2025