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

|

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

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

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

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

Как найти неиспользуемые посты в WordPress

Первый шаг — определить, какие записи можно считать неиспользуемыми. Обычно это:

Для поиска таких постов можно использовать SQL-запросы к базе данных. Например, вот запрос, который выбирает черновики старше 90 дней:

SELECT ID, post_title, post_date FROM wp_posts WHERE post_status = 'draft' AND post_date <= DATE_SUB(NOW(), INTERVAL 90 DAY);

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

Использование WP_Query для поиска старых черновиков

Если хочется сделать поиск на уровне кода WordPress, удобно использовать класс WP_Query. Пример функции, которая получает черновики старше 3 месяцев:

function wpreboot_get_old_drafts() {
    $args = [
        'post_type'      => 'post',
        'post_status'    => 'draft',
        'date_query'     => [
            [
                'before' => '3 months ago',
            ],
        ],
        'posts_per_page' => -1,
    ];
    $query = new WP_Query( $args );
    return $query->posts;
}

Эта функция вернёт массив постов, которые можно обработать дальше.

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

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

Пример удаления постов через PHP с подтверждением

Ниже пример функции, которая удаляет посты из массива по их ID, предварительно отправляя их в корзину:

function wpreboot_trash_and_delete_posts( $post_ids ) {
    foreach ( $post_ids as $id ) {
        // Перемещаем в корзину
        wp_trash_post( $id );
    }
    // Можно добавить код для окончательного удаления через wp_delete_post с параметром true
}

Если хотите полностью удалить без корзины, используйте wp_delete_post( $id, true ), но будьте осторожны.

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

Иногда причина накопления неиспользуемого контента — неконтролируемое создание новых постов с определёнными характеристиками. Можно ограничить создание таких записей двумя способами:

Фильтрация создания постов по хуку save_post

Пример функции, которая запрещает создание постов с меткой «test» и удаляет их сразу после сохранения:

function wpreboot_block_test_posts( $post_id, $post, $update ) {
    if ( $update ) {
        return; // Только при создании
    }
    $tags = wp_get_post_tags( $post_id, [ 'fields' => 'names' ] );
    if ( in_array( 'test', $tags ) ) {
        wp_delete_post( $post_id, true );
    }
}
add_action( 'save_post', 'wpreboot_block_test_posts', 10, 3 );

Такой код поможет избежать появления нежелательных записей.

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

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

Резюме: как встроить этот функционал в тему или плагин

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

Пример добавления WP-Cron для запуска функции еженедельно:

if ( ! wp_next_scheduled( 'wpreboot_weekly_cleanup' ) ) {
    wp_schedule_event( time(), 'weekly', 'wpreboot_weekly_cleanup' );
}
add_action( 'wpreboot_weekly_cleanup', 'wpreboot_clean_old_drafts' );

function wpreboot_clean_old_drafts() {
    $old_drafts = wpreboot_get_old_drafts();
    $post_ids = wp_list_pluck( $old_drafts, 'ID' );
    wpreboot_trash_and_delete_posts( $post_ids );
}

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

Как сделать автоматический откат изменений при ошибках в WordPress
22.02.2026
Как использовать OmniVideo для автоматического видео-контента в WordPress
19.03.2026
Оптимизация базы данных WordPress: удаляем избыточные данные для ускорения сайта
18.11.2025
Как удалить или скрыть авторизацию для определённых пользователей в WordPress
26.03.2026
Как изменить URL пользовательского профиля в WordPress без потери SEO
09.02.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше