wpwebsite.ru wordpress WPWebSite

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

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

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

Диагностика: как определить наличие забытых корзин

WooCommerce хранит сессии корзин в базе данных в таблице wp_woocommerce_sessions. Для оценки количества записей можно выполнить SQL-запрос через phpMyAdmin или терминал:

SELECT COUNT(*) FROM wp_woocommerce_sessions;

Если число записей превышает несколько тысяч, стоит задуматься о регулярной очистке.

Пошаговое решение: добавляем автоматическое удаление старых корзин

1. Создание функции очистки корзин старше N дней

Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:

function wc_clear_old_sessions() {
    global $wpdb;
    $days = 7; // Время жизни сессии в днях
    $expiration = time() - ( $days * DAY_IN_SECONDS );

    // Таблица сессий WooCommerce
    $table = $wpdb->prefix . 'woocommerce_sessions';

    // Удаляем записи, где session_expiry меньше текущего времени минус $days
    $deleted = $wpdb->query(
        $wpdb->prepare(
            "DELETE FROM $table WHERE session_expiry < %d",
            $expiration
        )
    );

    return $deleted;
}

2. Запуск очистки по крону WordPress

Добавьте в файл functions.php следующий код для регистрации и запуска задачи:

// Регистрируем интервал в 12 часов
add_filter('cron_schedules', function($schedules) {
    if(!isset($schedules['twicedaily'])) {
        $schedules['twicedaily'] = [
            'interval' => 12 * 60 * 60,
            'display'  => __('Every 12 Hours')
        ];
    }
    return $schedules;
});

// Планируем событие при активации темы/плагина
if (!wp_next_scheduled('wc_clear_sessions_hook')) {
    wp_schedule_event(time(), 'twicedaily', 'wc_clear_sessions_hook');
}

// Хук на очистку
add_action('wc_clear_sessions_hook', 'wc_clear_old_sessions');

Проверка результата после внедрения

  • С помощью phpMyAdmin или SQL-запроса проверяем количество записей в wp_woocommerce_sessions до и после запуска задачи.
  • Просмотрите файл журналов (если ведёте логирование) или добавьте временно логирование в функцию очистки, например, через error_log, чтобы убедиться, что функция выполняется.
  • Проверьте, что пользователи могут без проблем добавлять товары в корзину и оформлять заказы — функция не должна удалять активные сессии.

Частые ошибки и как их исправить

  • Функция не запускается по расписанию. Проверьте, что WP-Cron работает: для этого посетите wp-cron.php вручную или используйте плагин WP Crontrol.
  • Удаляются активные сессии. Проверьте правильность расчёта времени в условии, убедитесь, что время в базе и в PHP совпадает (UTC vs локальное).
  • Ошибка доступа к базе данных. Проверьте глобальную переменную $wpdb и правильность имени таблицы, учитывая префикс БД.

Практические советы по безопасности и производительности

  • Время жизни сессии выбирайте исходя из специфики вашего магазина: 7 дней — стандарт, но у некоторых сайтов может быть 1-3 дня.
  • Обязательно делайте резервные копии базы перед внедрением автоматической очистки.
  • Если база большая, выполнение запроса удаления большого количества строк может создавать нагрузку — используйте лимит или разбивайте удаление партиями.
  • Для улучшения производительности сайта используйте специализированные плагины кэширования и оптимизации базы, например, Clearfy Pro от WPShop (ссылка), которые помогут держать базу в порядке без кастомного кода.

Сравнение вариантов удаления забытых корзин

МетодОписаниеПлюсыМинусы
Ручное удаление SQL-запросомПрямое удаление записей через phpMyAdminБыстро, без кодаТребует регулярного запуска, риск ошибки
Автоматический WP-Cron с кодомАвтоматическая очистка по расписаниюАвтоматизация, гибкость настройкиЗависит от работы WP-Cron, требует базовых навыков
Плагин оптимизации (например, Clearfy Pro)Готовое решение с интерфейсом и дополнительными функциямиПростота, безопасность, поддержкаПлатное, лишний плагин
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше