Как удалить все незавершённые заказы WooCommerce без плагинов

Что такое незавершённые заказы в WooCommerce и почему их нужно удалять

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

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

Диагностика проблемы: как проверить количество незавершённых заказов

Для начала убедитесь, сколько у вас заказов со статусом pending. В админке WooCommerce откройте раздел Заказы и используйте фильтр по статусу.

Для более точной диагностики выполните SQL-запрос в базе данных (например, через phpMyAdmin):

SELECT COUNT(*) FROM wp_posts WHERE post_type = 'shop_order' AND post_status = 'wc-pending';

Замените wp_ на ваш префикс таблиц, если он отличается.

Пошаговое решение: удаление всех незавершённых заказов через код

Чтобы массово удалить заказы со статусом wc-pending без плагинов, используйте следующий PHP-скрипт. Его можно запустить через functions.php вашей темы или через WP-CLI (рекомендуется для больших баз):

function delete_all_pending_orders() {
    $args = [
        'post_type'      => 'shop_order',
        'post_status'    => 'wc-pending',
        'posts_per_page' => -1,
        'fields'         => 'ids',
    ];

    $pending_orders = get_posts($args);

    if (!empty($pending_orders)) {
        foreach ($pending_orders as $order_id) {
            wp_delete_post($order_id, true); // true — полное удаление без корзины
        }
    }
}

add_action('init', 'delete_all_pending_orders');

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

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

Если есть доступ к командной строке, это можно сделать быстрее и без риска подвесить сайт:

wp post delete $(wp post list --post_type=shop_order --post_status=wc-pending --field=ID) --force

Команда удалит все заказы в статусе wc-pending без возможности восстановления.

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

После применения решения:

  • Проверьте в админке WooCommerce раздел Заказы — заказы со статусом pending должны отсутствовать.
  • Повторно выполните SQL-запрос из раздела диагностики — количество должно быть нулевым.
  • Убедитесь, что другие статусы заказов не пострадали.

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

  • Функция не срабатывает: возможно, функция добавлена не в правильный хук или файл. Используйте init или сделайте отдельный скрипт.
  • Заказы не удаляются полностью: параметр wp_delete_post должен быть с true для удаления без корзины.
  • Удаление происходит при каждом запросе: не забудьте убрать или закомментировать функцию после очистки.
  • Нет доступа к базе или WP-CLI: используйте скрипт в functions.php, но с осторожностью.

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

  • Перед удалением всегда делайте резервную копию базы данных.
  • Удаляйте заказы по расписанию, например, через CRON, если накопление происходит регулярно.
  • Если хотите оставить статистику, вместо удаления меняйте статус на cancelled или failed.
  • Следите за ростом таблиц wp_posts и wp_postmeta — удаление заказов не удаляет автоматически все связанные метаданные, но wp_delete_post обрабатывает это корректно.

Таблица сравнения способов удаления незавершённых заказов

МетодПреимуществаНедостатки
PHP-скрипт в functions.phpПросто внедрить, не требует доступа к серверуРиск случайного запуска, может нагрузить сервер при большом объёме
WP-CLIБыстро и надёжно, подходит для больших базТребуется доступ к командной строке сервера
Плагины очисткиУдобный интерфейс, дополнительные функцииМожет создавать нагрузку, лишний код в системе
Как отлаживать REST API WordPress: практические методы и примеры
08.03.2026
Как создать динамический фильтрованный список статей в WordPress
26.01.2026
Как избежать проблем с несоответствием версий WordPress и PHP
19.02.2026
Как успешно обновлять WooCommerce без потери данных
26.04.2026
Как удалить большие изображения из медиабиблиотеки WordPress для экономии места
11.02.2026