Почему важно удалять неактивные корзины в WooCommerce
В WooCommerce данные о корзинах сохраняются в таблице wp_woocommerce_sessions, а иногда и в wp_options (в зависимости от версии). Накопление устаревших и неактивных сессий приводит к росту размера базы данных, замедлению работы сайта и увеличению времени отклика при загрузке страниц.
Удаление неактивных корзин помогает:
- уменьшить размер таблиц в базе данных, особенно
wp_woocommerce_sessions; - ускорить запросы к базе и общую производительность WooCommerce;
- снизить риски конфликтов с плагинами и обновлениями.
Диагностика: как определить объем неактивных корзин
Для диагностики выполните SQL-запрос в базе данных через phpMyAdmin или WP CLI:
SELECT COUNT(*) AS total_sessions, MIN(session_expiry) AS oldest_expiry FROM wp_woocommerce_sessions;Если total_sessions очень большой (тысячи и больше), есть смысл очищать устаревшие записи. Также проверяйте дату oldest_expiry — если записи старше 30 дней, их можно безопасно удалить.
Пошаговое удаление неактивных корзин через код
1. Написание функции удаления устаревших сессий
В WooCommerce сессии сохраняются с полем session_expiry — UNIX timestamp времени истечения действия сессии. Мы удалим записи с истекшим сроком более 30 дней назад.
function premiumwp_delete_expired_woocommerce_sessions() {
global $wpdb;
$table = $wpdb->prefix . 'woocommerce_sessions';
$threshold = time() - 30 * DAY_IN_SECONDS; // 30 дней назад
$deleted = $wpdb->query(
$wpdb->prepare(
"DELETE FROM $table WHERE session_expiry < %d",
$threshold
)
);
return $deleted;
}2. Запуск функции вручную и через WP Cron
Для однократного запуска добавьте в functions.php темы или выполните через WP CLI:
echo premiumwp_delete_expired_woocommerce_sessions();Для автоматической периодической очистки добавьте WP Cron:
add_action('premiumwp_daily_cleanup', 'premiumwp_delete_expired_woocommerce_sessions');
if (!wp_next_scheduled('premiumwp_daily_cleanup')) {
wp_schedule_event(time(), 'daily', 'premiumwp_daily_cleanup');
}Проверка результата после внедрения
Для проверки выполните SQL-запрос повторно и сравните количество записей до и после удаления:
SELECT COUNT(*) FROM wp_woocommerce_sessions;Также мониторьте нагрузку сервера и скорость отклика страниц корзины и оформления заказа. Для оценки изменений используйте такие инструменты, как Query Monitor или New Relic.
Частые ошибки и как их исправить
- Удаление активных сессий: Если период удаления слишком короткий (например, 1 день), вы рискуете удалить активные корзины. Используйте 30 дней или больше.
- Ошибки прав доступа к базе данных: Убедитесь, что пользователь БД, под которым работает WordPress, имеет права DELETE для таблицы
wp_woocommerce_sessions. - Отсутствие таблицы
wp_woocommerce_sessions: В старых версиях WooCommerce данные хранятся вwp_optionsпод ключом_woocommerce_session_. Для таких случаев требуется иной способ очистки. - Неправильный префикс таблиц: Убедитесь, что используете правильный префикс
$wpdb->prefix, особенно если сайт использует мультисайт или кастомный префикс.
Практические советы по безопасности и производительности
- Выполняйте удаление сессий в ночное время или периоды низкой нагрузки, чтобы не ухудшать опыт пользователей.
- Регулярно делайте резервные копии базы данных перед массовыми изменениями.
- Используйте транзакции и проверяйте ошибки выполнения запросов.
- Для сайтов с большим трафиком рекомендуем ограничить период хранения сессий до 30-60 дней.
- Если вы используете плагин Clearfy Pro, в нем есть опции для автоматической очистки сессий и оптимизации базы — интегрируйте код с его функционалом для удобства.
Сравнение способов удаления неактивных корзин в WooCommerce
| Метод | Описание | Плюсы | Минусы |
|---|---|---|---|
| Ручной SQL-запрос | Прямое удаление записей из таблицы сессий через phpMyAdmin или WP CLI | Быстро, не требует кода | Риск ошибок, нет автоматизации |
| Код в functions.php + WP Cron | Автоматическое удаление устаревших сессий с помощью PHP-функции и планировщика | Автоматизация, контроль через код | Требует навыков кодирования, нужно следить за WP Cron |
| Плагины (например, Clearfy Pro) | Встроенные функции очистки и оптимизации базы WooCommerce | Удобство, дополнительные инструменты оптимизации | Может влиять на производительность, требует установки плагина |