Как удалить или скрыть частичные (черновики) посты в WordPress

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

Что такое частичные (черновики) посты в WordPress и почему их нужно контролировать

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

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

Удаление черновиков вручную и через админку WordPress

Самый простой способ удаления черновиков — сделать это через раздел «Записи» в админке WordPress. Там можно отфильтровать записи по статусу «Черновик» и массово удалить ненужные.

  • Зайдите в «Записи» → «Все записи».
  • Вверху нажмите на фильтр «Черновики».
  • Выберите ненужные посты и нажмите «Удалить».

Однако при большом количестве черновиков этот способ неудобен. Тогда стоит прибегнуть к автоматизации.

Автоматическое удаление старых черновиков с помощью WPID функции

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

function wpid_delete_old_drafts() {
    global $wpdb;
    $days = 30; // Удалять черновики старше 30 дней
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $wpdb->query($wpdb->prepare(
        "DELETE FROM $wpdb->posts WHERE post_status = 'draft' AND post_modified < %s",
        $date_threshold
    ));
}

// Запускать ежедневно через wp_cron
add_action('wp_scheduled_delete_drafts', 'wpid_delete_old_drafts');

if (!wp_next_scheduled('wp_scheduled_delete_drafts')) {
    wp_schedule_event(time(), 'daily', 'wp_scheduled_delete_drafts');
}

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

Как скрыть частичные (черновики) посты из списка в админке WordPress

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

function wpid_exclude_drafts_from_admin($query) {
    if (is_admin() && $query->is_main_query() && $query->get('post_type') == 'post') {
        $post_status = $query->get('post_status');
        if (empty($post_status) || $post_status === 'publish') {
            $query->set('post_status', array('publish', 'pending', 'future', 'private'));
        }
    }
}
add_action('pre_get_posts', 'wpid_exclude_drafts_from_admin');

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

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

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

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

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

Работа с автосохранениями в WordPress

Автосохранения — это особый тип частичных постов, которые WordPress создаёт для предотвращения потери данных. Они хранятся в той же таблице, что и посты, с типом revision. Иногда их количество чрезмерно растёт.

Для удаления старых ревизий и автосохранений можно использовать следующий код:

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

    $wpdb->query($wpdb->prepare(
        "DELETE FROM $wpdb->posts WHERE post_type = 'revision' AND post_modified < %s",
        $date_threshold
    ));
}
add_action('wp_scheduled_delete_revisions', 'wpid_delete_old_revisions');

if (!wp_next_scheduled('wp_scheduled_delete_revisions')) {
    wp_schedule_event(time(), 'daily', 'wp_scheduled_delete_revisions');
}

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

Заключение по теме управления частичными постами

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

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

Как сделать автоматическое удаление старого контента в WordPress
26.12.2025
Как создать шорткод для вывода случайного поста в WordPress
29.11.2025
Как избежать конфликтов между WooCommerce и плагинами: как отслеживать и решать
06.05.2026
WooCommerce: исключение товаров из определённых категорий из корзины
13.05.2026
WooCommerce: как автоматически удалять заказы по статусу после оплаты
31.05.2026