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

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

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

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

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

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

Автоматическое удаление заказов через код в functions.php

Чтобы регулярно удалять старые заказы, можно добавить в тему или плагин пользовательский код, который будет запускаться по расписанию с помощью WP-Cron. Пример функции для удаления заказов старше 90 дней:

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

    $args = array(
        'status' => array('completed', 'processing', 'on-hold', 'cancelled', 'refunded', 'failed'),
        'date_created' => '<' . $date,
        'limit' => -1,
        'return' => 'ids',
    );

    $orders = wc_get_orders($args);

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

// Регистрация Cron задачи
if (!wp_next_scheduled('wpdream_daily_delete_old_orders')) {
    wp_schedule_event(time(), 'daily', 'wpdream_daily_delete_old_orders');
}

// Хук на выполнение
add_action('wpdream_daily_delete_old_orders', 'wpdream_delete_old_woocommerce_orders');

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

Объяснение кода

Функция wpdream_delete_old_woocommerce_orders используя класс wc_get_orders получает ID заказов по заданным критериям. Затем цикл удаляет каждый заказ с помощью wp_delete_post с параметром true, чтобы удалить навсегда без попадания в корзину WordPress.

Хук wpdream_daily_delete_old_orders привязывает функцию к задаче WP-Cron, а блок с регистрацией создает это событие, если оно ещё не задано.

Использование плагинов для удаления старых заказов WooCommerce

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

  • WooCommerce Order Cleaner — позволяет массово удалять заказы по фильтрам, включая дату и статус. Можно настроить регулярное удаление через Cron.
  • Delete Expired Transients for WooCommerce — хотя и не напрямую удаляет заказы, помогает очищать временные данные, уменьшая нагрузку.

Для автоматизации удаления именно старых заказов стоит обратить внимание на плагин WooCommerce Order Cleaner на wpshop.ru — он прост в настройке и хорошо интегрируется с WooCommerce.

Настройка WooCommerce Order Cleaner

После установки и активации плагина перейдите в его настройки, где можно задать:

  • Статусы заказов, которые нужно удалять.
  • Минимальный возраст заказа для удаления (например, 90 дней).
  • Интервал запуска задачи — можно настроить ежедневное удаление.

Плагин запускает WP-Cron задачу, которая автоматически удаляет заказы по заданным параметрам.

Важные моменты и рекомендации

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

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

Если вы используете сторонние расширения WooCommerce, которые зависят от истории заказов, убедитесь, что удаление не повлияет на их работу.

Для тестирования можно запускать функцию удаления вручную, вызывая её через WP-CLI или временно добавляя вызов в админке.

Заключение

Автоматическое удаление старых заказов в WooCommerce — отличный способ поддерживать базу данных в порядке и оптимизировать работу сайта. Вы можете реализовать это самостоятельно через код или использовать специализированные плагины, например, WooCommerce Order Cleaner.

Поддержка чистоты данных — важный шаг в профессиональном управлении интернет-магазином на WordPress.

Как отключить Emoji в WordPress для ускорения сайта
18.03.2026
Как использовать REST API WordPress для создания собственных приложений
15.12.2025
Как удалить дубликаты постов в WordPress: практическое руководство с примерами
01.03.2026
Как избежать повторов товаров и ошибок в WooCommerce: практическое руководство
25.05.2026
Как удалить постоянные редиректы в WooCommerce без плагинов
28.04.2026