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

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

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

Заказы WooCommerce хранятся в таблицах базы данных WordPress и включают множество метаданных. По мере роста количества заказов база данных становится громоздкой, что приводит к:

  • Увеличению времени отклика запросов к базе данных.
  • Росту размера резервных копий и времени их создания.
  • Проблемам с производительностью сайта, особенно при аналитике и отчетах.

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

Как определить, какие заказы можно удалять

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

  • Заказы со статусом completed или cancelled, которые выполнены или отменены и не нужны для дальнейшей работы.
  • Заказы старше определённого периода — например, 1 год или 6 месяцев.
  • Заказы без активных возвратов или споров.

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

Автоматическое удаление заказов с помощью кода

Вы можете добавить следующий код в файл functions.php вашей активной темы или в отдельный плагин. Этот код удалит заказы со статусом completed старше 180 дней.

function wpscan_delete_old_completed_orders() {
    $days = 180; // количество дней
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $args = array(
        'limit'        => -1,
        'status'       => 'completed',
        'date_created' => '<' . $date,
        'return'       => 'ids',
    );

    $orders = wc_get_orders($args);

    foreach ($orders as $order_id) {
        wp_delete_post($order_id, true); // true — удалять без перемещения в корзину
    }
}

add_action('wpscan_cron_delete_old_orders', 'wpscan_delete_old_completed_orders');

Данный код можно запускать по расписанию через WP-Cron.

Добавляем расписание в WP-Cron

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

function wpscan_schedule_old_orders_deletion() {
    if (!wp_next_scheduled('wpscan_cron_delete_old_orders')) {
        wp_schedule_event(time(), 'weekly', 'wpscan_cron_delete_old_orders');
    }
}
add_action('wp', 'wpscan_schedule_old_orders_deletion');

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

Удаление заказов с помощью плагинов

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

  • WooCommerce Bulk Delete — позволяет массово удалять заказы по фильтрам: по дате, статусу и другим параметрам.
  • WP Bulk Delete — универсальный плагин для массового удаления постов, работает с типами записей WooCommerce.

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

Дополнительные рекомендации по оптимизации WooCommerce

Оптимизация базы данных

Регулярно очищайте транзиенты, ревизии и временные данные. Для этого подойдут плагины:

  • Clearfy Pro — в том числе для оптимизации базы данных и отключения ненужных функций WordPress.

Кэширование и CDN

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

Мониторинг производительности

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

Заключение

Автоматизация удаления старых заказов WooCommerce — важный шаг к поддержанию чистоты и эффективности базы данных магазина. С помощью приведенного кода и WP-Cron вы сможете настроить регулярную очистку, а использование соответствующих плагинов облегчит процесс без необходимости программирования. Не забывайте о резервном копировании и согласовании сроков хранения данных с бухгалтерами и юристами.

Как отладить проблемы с кэшированием в WordPress
25.11.2025
Как настроить отправку писем WordPress через SMTP: плагины и примеры кода
21.02.2026
Как удалить старые версии постов в WordPress с помощью кода
27.12.2025
Как решить проблему неудачного удаления отказанных заказов WooCommerce с помощью кода
28.04.2026
Автоматическое удаление старых чертежей и документов из медиа библиотеки WordPress
05.06.2026