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

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

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

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

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

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

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

Для реализации автоматического удаления контента в WordPress можно использовать wp-cron — встроенный механизм планировщика задач. Ниже пример функции, которая удалит все записи типа post, опубликованные более 180 дней назад.

function wpid_kakdelat_autodelete_content() {
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'date_query'     => array(
            array(
                'before' => '180 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 - удаление без возможности восстановления
        }
    }
}

// Планируем событие при активации темы или плагина
if ( ! wp_next_scheduled( 'wpid_kakdelat_daily_cleanup' ) ) {
    wp_schedule_event( time(), 'daily', 'wpid_kakdelat_daily_cleanup' );
}

// Привязываем функцию к событию
add_action( 'wpid_kakdelat_daily_cleanup', 'wpid_kakdelat_autodelete_content' );

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

Как добавить этот код на сайт

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

Настройка удаления по пользовательским типам записей и статусам

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

  • page — для страниц;
  • custom_post_type — для ваших кастомных типов;
  • Можно также фильтровать по статусу — например, удалять только черновики или отклонённые записи.

Пример с кастомным типом и статусом:

function wpid_kakdelat_autodelete_custom() {
    $args = array(
        'post_type'      => 'custom_post_type',
        'post_status'    => array('draft', 'pending'),
        'date_query'     => array(
            array(
                'before' => '90 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 );
        }
    }
}

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

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

  • WP Bulk Delete — позволяет удалять записи, страницы, кастомные типы с гибкой фильтрацией по дате, категориям, таксономиям и статусам. Есть возможность автоматического запуска по расписанию.
  • Auto Delete Posts — простой плагин для удаления постов старше заданного срока. Можно настроить для каждого типа постов отдельно.
  • Clearfy Pro — комплексный плагин оптимизации, в числе функций есть возможность настройки автоматического удаления мусорного контента, в том числе старых записей, ревизий и черновиков. Подробнее на wpshop.ru.

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

Рекомендации по безопасности и тестированию

Удаление контента — это необратимая операция, особенно если используется wp_delete_post( $post_id, true ) с параметром удаления без помещения в корзину. Рекомендуется:

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

Пример логирования ID удалённых записей:

function wpid_kakdelat_autodelete_content_with_log() {
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'date_query'     => array(
            array(
                'before' => '180 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 );
            error_log( 'WPID: удален пост с ID ' . $post_id );
        }
    }
}

Выводы и лучшие практики

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

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

Как удалить или изменить авторские данные в WordPress программно
05.02.2026
Как использовать WPCommunity для создания форума в WordPress
21.03.2026
Как добавить автоматический перевод постов в WordPress
04.03.2026
Как создать свой плагин для WordPress с примерами кода
21.11.2025
Как исключить определённые плагины из автообновлений в WordPress
25.04.2026