Как автоматизировать удаление старых заказов в 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 от прохождения по слухам и сидтам: практические методы и кодовые решения
15.02.2026
Как отключить плагины на определённых страницах WordPress
06.02.2026
Как защитить WordPress от удаления аккаунта администратора
09.04.2026
Как безопасно обновлять базу данных WordPress без потери данных
06.03.2026
Как защитить WordPress от ботнет атак: эффективные решения
03.02.2026