Как автоматизировать удаление старого контента в WordPress

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

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

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

  • Сократить размер базы данных, что ускоряет работу сайта.
  • Улучшить SEO, избавившись от страниц с низкой посещаемостью и плохими показателями.
  • Обеспечить актуальность информации для пользователей.
  • Снизить нагрузку на сервер при работе с большим объемом данных.

Вручную удалять устаревшие записи неудобно и рискованно, особенно на больших сайтах. Поэтому автоматизация процесса — оптимальное решение.

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

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

1. Auto Delete Posts

Плагин Auto Delete Posts позволяет задать сроки хранения записей и автоматически удалять устаревший контент. Основные возможности:

  • Выбор типов записей для удаления (посты, страницы, кастомные типы).
  • Настройка срока жизни записи в днях.
  • Фильтрация по категориям, тегам, статусу публикации.
  • Поддержка автоматического удаления через WP Cron.

Установка и настройка просты — после активации перейдите в настройки плагина и задайте параметры удаления.

2. WP Bulk Delete

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

Пример возможностей:

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

Плагин имеет расширяемый API для тонкой настройки.

Автоматизация удаления через собственный код

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

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

function wplink_auto_delete_old_posts() {
    $days = 90; // Удалять записи старше 90 дней
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $args = [
        'date_query' => [
            [
                'before' => $date,
                '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 — удаление без возможности восстановления
        }
    }
}

// Планируем задачу при активации темы или плагина
if (!wp_next_scheduled('wplink_daily_delete_old_posts')) {
    wp_schedule_event(time(), 'daily', 'wplink_daily_delete_old_posts');
}

add_action('wplink_daily_delete_old_posts', 'wplink_auto_delete_old_posts');

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

Как отменить запланированное событие

Если нужно отключить автоматическое удаление, можно удалить задачу из расписания:

function wplink_deactivate_delete_schedule() {
    $timestamp = wp_next_scheduled('wplink_daily_delete_old_posts');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wplink_daily_delete_old_posts');
    }
}

register_deactivation_hook(__FILE__, 'wplink_deactivate_delete_schedule');

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

Используйте безопасное удаление через корзину

По умолчанию функция wp_delete_post() с параметром true удаляет записи без возможности восстановления. Чтобы иметь запасной вариант, можно удалить записи в корзину и периодически очищать её.

Резервное копирование перед массовым удалением

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

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

После массового удаления записей рекомендуется провести оптимизацию базы данных, чтобы освободить место и ускорить запросы. Для этого можно использовать плагины, такие как WP-Optimize, либо выполнить SQL-запросы вручную.

Расширение функционала: удаление по дополнительным критериям

Иногда требуется не просто удалять записи по дате, а учитывать дополнительные параметры. Например, удалять записи без комментариев, с низкой посещаемостью или из определённых категорий.

Пример удаления записей без комментариев старше 30 дней

function wplink_delete_old_posts_no_comments() {
    $days = 30;
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $args = [
        'date_query' => [
            [
                'before' => $date,
                'inclusive' => true,
            ],
        ],
        'post_type' => 'post',
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1,
        'comment_count' => 0,
    ];

    $posts = get_posts($args);

    if (!empty($posts)) {
        foreach ($posts as $post_id) {
            wp_delete_post($post_id, true);
        }
    }
}

add_action('wplink_daily_delete_old_posts', 'wplink_delete_old_posts_no_comments');

Здесь добавлен параметр 'comment_count' => 0, который позволяет выбрать записи без комментариев.

Фильтрация по категориям

Для удаления записей из конкретных категорий используйте параметр category__in:

$args = [
    // другие параметры
    'category__in' => [5, 12], // ID категорий
];

Так можно точно настроить, какой контент удалять.

Заключение

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

Для расширения возможностей оптимизации и резервирования рекомендуем ознакомиться с плагинами и сервисами на WPShop.ru.

Как создать динамические формы в WordPress с помощью плагинов и кода
04.03.2026
Как массово удалить или изменить атрибуты Title и Alt у изображений в WordPress
25.02.2026
Как удалить пустую страницу в WordPress с помощью кода
14.01.2026
Как использовать каскадные меню в WordPress: примеры кода и лучшие плагины
27.12.2025
Как сделать динамические виджеты в WordPress: подробное руководство
07.01.2026