Диагностика проблемы: почему исчезают заказы в WooCommerce
В WooCommerce по умолчанию старые заказы могут автоматически удаляться или переходить в статус, из-за чего они не отображаются в админке. Это происходит из-за настроек хранения и очистки данных, а также из-за работы сторонних плагинов, оптимизирующих базу данных. Если вы заметили, что заказы пропадают спустя некоторое время, нужно начать с проверки следующих моментов:
- Настройки WooCommerce по хранению заказов и очистке базы данных.
- Плагины оптимизации и очистки базы данных (например, Clearfy Pro, WP-Optimize и др.).
- Крон-задачи WordPress, которые могут запускать удаление.
- Пользовательские скрипты или хуки, которые могли быть добавлены в тему или плагины.
Проверка настроек WooCommerce
В WooCommerce нет штатной функции автоматического удаления заказов, но в версии 7.9+ появилась опция woocommerce_cleanup_orders_days, которая может очищать заказы со статусом «отменён» или «неудачный» после определённого времени.
Чтобы проверить значение этой опции, можно использовать следующий код:
add_action('admin_init', function() {
$days = get_option('woocommerce_cleanup_orders_days');
error_log('woocommerce_cleanup_orders_days: ' . var_export($days, true));
});Проверьте вывод в логах сервера. Если там стоит число (например, 30), то заказы старше этого количества дней могут удаляться.
Пошаговое решение: отключаем автоматическое удаление заказов
1. Отключить очистку заказов через фильтр
Чтобы полностью отключить очистку заказов, добавьте следующий код в файл functions.php вашей темы или в кастомный плагин:
add_filter('woocommerce_cleanup_orders_days', '__return_false');Это гарантирует, что WooCommerce не будет автоматически удалять заказы по времени.
2. Проверить и отключить сторонние плагины очистки
Если используются плагины для оптимизации базы, временно отключите их и проверьте, исчезает ли проблема с удалением заказов.
3. Отключить пользовательские задачи WP-Cron, удаляющие заказы
Проверьте наличие крон-задач с помощью плагина WP Crontrol или через консоль:
wp cron event list --fields=hookИщите задачи с названиями, связанными с очисткой заказов (например, woocommerce_cleanup_orders). Отключите их через код или плагин.
Проверка результата после внедрения изменений
Чтобы убедиться, что заказы не удаляются автоматически:
- Создайте тестовый заказ с любым статусом.
- Установите системное время или симулируйте прохождение времени (например, с помощью WP-CLI или плагина для изменения даты).
- Проверьте, что заказ сохраняется в админке WooCommerce спустя установленный период (больше 30 дней, если была такая настройка).
- Мониторьте логи сервера на предмет ошибок или сообщений об удалении заказов.
Частые ошибки и как их исправить
- Ошибка: Заказы пропадают, несмотря на отключение фильтра
woocommerce_cleanup_orders_days.
Причина: Действует сторонний плагин или кастомный код.
Решение: Отключите по очереди плагины оптимизации, проверьте кастомные хуки вfunctions.php. - Ошибка: После отключения автоматической очистки база данных растёт слишком быстро.
Причина: Отсутствие регулярной оптимизации.
Решение: Настройте регулярные резервные копии и оптимизацию таблиц без удаления данных заказов. - Ошибка: Заказы исчезают только с определённым статусом.
Причина: WooCommerce по умолчанию очищает заказы со статусом «отменён» или «неудачный».
Решение: Измените статусы заказов или настройте фильтр, как показано выше.
Практические советы по безопасности и производительности
- Не отключайте полностью очистку базы данных без создания полноценной системы резервного копирования. Используйте Clearfy Pro для безопасной оптимизации базы.
- Для крупных магазинов с тысячами заказов используйте внешние системы архивации, чтобы не нагружать базу данных.
- Регулярно проверяйте логи WP-Cron и отключайте неиспользуемые задачи.
Сравнение методов отключения автоматического удаления заказов
| Метод | Описание | Плюсы | Минусы |
|---|---|---|---|
Фильтр woocommerce_cleanup_orders_days | Отключение очистки заказов через фильтр WooCommerce | Простой, не требует плагинов | Работает только с нативной функцией WooCommerce |
| Отключение плагинов оптимизации | Отключение очистки через сторонние плагины | Полный контроль над сторонним кодом | Может повлиять на производительность |
| Удаление крон-задач | Контроль над задачами WP-Cron, удаляющими заказы | Точный контроль и гибкость | Требует технических знаний |