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 вы сможете настроить регулярную очистку, а использование соответствующих плагинов облегчит процесс без необходимости программирования. Не забывайте о резервном копировании и согласовании сроков хранения данных с бухгалтерами и юристами.