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

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

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

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

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

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

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

1. Использование WP Cron для удаления старых постов по дате

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

Пример кода для удаления постов старше 1 года:

function wpscan_delete_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'before' => '1 year ago',
            ),
        ),
        '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('wpscan_daily_delete_old_posts')) {
    wp_schedule_event(time(), 'daily', 'wpscan_daily_delete_old_posts');
}

add_action('wpscan_daily_delete_old_posts', 'wpscan_delete_old_posts');

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

2. Удаление по пользовательским меткам и статусам

Иногда нужно удалять не только по дате, но и по другим критериям, например, посты с определённой категорией, меткой или статусом.

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

function wpscan_delete_obsolete_tagged_posts() {
    $args = array(
        'tag' => 'obsolete',
        'date_query' => array(
            array('before' => '6 months ago'),
        ),
        'post_type' => 'post',
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1,
    );

    $posts = get_posts($args);

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

add_action('wpscan_daily_delete_old_posts', 'wpscan_delete_obsolete_tagged_posts');

Такой подход позволяет гибко управлять удалением контента с учётом бизнес-логики сайта.

Плагины для автоматизации удаления старого контента

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

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

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

Как избежать ошибок при автоматическом удалении контента

1. Создавайте резервные копии

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

2. Тестируйте на тестовом сайте

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

3. Используйте логирование

Рекомендуется добавить в функцию удаления запись логов — какие посты и когда были удалены. Это поможет контролировать процесс и выявлять возможные проблемы.

function wpscan_delete_old_posts_with_log() {
    $args = array(
        'date_query' => array(
            array('before' => '1 year ago'),
        ),
        '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) {
            $title = get_the_title($post_id);
            if (wp_delete_post($post_id, true)) {
                error_log("[wpscan] Удалён пост ID: $post_id, Заголовок: $title");
            }
        }
    }
}

add_action('wpscan_daily_delete_old_posts', 'wpscan_delete_old_posts_with_log');

Дополнительные советы по оптимизации контента

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

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

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

Для более мощных решений по оптимизации и управлению WordPress можно обратить внимание на плагины из WPSHOP, например, Clearfy Pro, который помогает убирать мусор и оптимизировать сайт.

Как автоматизировать удаление старого контента в WordPress по дате
06.04.2026
Как защитить WordPress от DoS-атак: эффективные методы и примеры
31.12.2025
Как решить проблему неудачного удаления отказанных заказов WooCommerce с помощью кода
21.04.2026
Как защитить WordPress от враждебных комментариев и спама: практические методы
15.03.2026
Как защитить WordPress от PHP-инъекций: лучшие методы и решения
12.11.2025