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

Почему нужно удалять черновики в WordPress и когда это актуально

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

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

В этой статье мы разберём, как быстро и безопасно удалить все черновики из базы данных WordPress с помощью кастомного PHP-кода и через WP-CLI, а также рассмотрим, как автоматизировать этот процесс.

Способы удаления всех черновиков: обзор

Существует несколько вариантов удаления всех черновиков:

  • Через админку WordPress — вручную удалять записи в разделе «Записи» → «Все записи» с фильтром по статусу «Черновик». Этот способ подходит для небольшого количества записей.
  • Использование плагинов для массового удаления записей по статусам (например, Bulk Delete). Однако плагины могут перегружать сайт и не всегда дают полный контроль.
  • Через WP-CLI — мощный инструмент для работы с WordPress из командной строки, позволяет быстро и безопасно удалять записи по статусу.
  • Через кастомный PHP-код — можно написать собственную функцию, которая удалит все черновики за один запрос или в цикле.

Далее остановимся на двух последних способах — WP-CLI и PHP-коде, которые подойдут разработчикам и администраторам серверов.

Удаление черновиков через WP-CLI

WP-CLI — это очень удобный инструмент для администрирования WordPress с командной строки. Если у вас есть доступ к консоли сервера, это самый быстрый и безопасный способ удалить черновики.

Команда для удаления всех записей со статусом draft выглядит так:

wp post delete $(wp post list --post_status=draft --format=ids) --force

Объяснение:

  • wp post list --post_status=draft --format=ids — получает список ID всех черновиков;
  • wp post delete ... --force — удаляет эти записи без помещения в корзину.

Важно: перед выполнением команды рекомендуется сделать резервную копию базы данных.

Преимущества этого способа:

  • Очень быстро и эффективно;
  • Безопасно, если есть резервная копия;
  • Можно запускать через cron для автоматизации;
  • Не требует изменения кода сайта.

Удаление всех черновиков через кастомный PHP-код для wp-1.ru

Если нет доступа к WP-CLI, можно написать собственную функцию для удаления всех черновиков. Важно понимать, что удаление производится с помощью функции wp_delete_post(), которая корректно очищает все связанные данные.

Пример функции для удаления всех черновиков:

function wp1ru_delete_all_drafts() {
    // Получаем все черновики
    $drafts = get_posts(array(
        'post_status' => 'draft',
        'numberposts' => -1,
        'post_type' => 'post', // Можно указать любой тип записи
        'fields' => 'ids',
    ));

    if (empty($drafts)) {
        return 'Черновики не найдены';
    }

    foreach ($drafts as $draft_id) {
        // Удаляем запись навсегда
        wp_delete_post($draft_id, true);
    }

    return count($drafts) . ' черновиков удалено';
}

Как использовать:

  1. Добавьте эту функцию в файл functions.php вашей темы или в отдельный плагин.
  2. Вызовите функцию, например, временно добавив вызов echo wp1ru_delete_all_drafts(); в шаблоне или запустив её через AJAX/REST API.

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

Альтернативный вариант — удаление пачками

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

function wp1ru_delete_drafts_batch($batch_size = 50) {
    $drafts = get_posts(array(
        'post_status' => 'draft',
        'numberposts' => $batch_size,
        'post_type' => 'post',
        'fields' => 'ids',
    ));

    if (empty($drafts)) {
        return 'Нет черновиков для удаления';
    }

    foreach ($drafts as $draft_id) {
        wp_delete_post($draft_id, true);
    }

    return count($drafts) . ' черновиков удалено';
}

Такую функцию можно запускать периодически, например через AJAX-запросы или CRON воркер.

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

Если вы предпочитаете графический интерфейс, рекомендуем обратить внимание на плагины:

  • Bulk Delete — мощный плагин для массового удаления записей по статусам, категориям, тегам и другим параметрам. Позволяет фильтровать и удалять черновики.
  • WP-Sweep — плагин для очистки базы данных, в том числе удаления черновиков, ревизий, спама и мусорных комментариев.

Использовать плагины удобно, но они могут быть менее производительными на больших сайтах, чем WP-CLI или кастомный код.

Рекомендации по безопасности и бэкапам

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

Для создания резервной копии можно использовать плагины, например, UpdraftPlus, или делать дамп базы через phpMyAdmin, WP-CLI или консоль MySQL.

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

Выводы: когда и как лучше удалять черновики

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

WP-CLI — самый быстрый и безопасный способ, если есть доступ к серверу. Кастомный PHP-код даёт гибкость и возможность встроить процесс в другие задачи.

Не забывайте про регулярные бэкапы и тестирование перед массовыми удалениями.

Как изменить способ авторизации в WordPress через плагин
31.03.2026
Как удалить удалённые медиафайлы из библиотеки WordPress
04.01.2026
Как установить ограничение на число публикаций в WordPress для конкретного пользователя
21.02.2026
Как избежать конфликтов между плагинами в WordPress: практические советы и примеры кода
25.12.2025
Как правильно удалить кэш Redis в WordPress: практическое руководство
13.01.2026