Contact Form 7: как автоматически удалять отправленные данные и логи формы

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

Contact Form 7 по умолчанию не сохраняет отправленные данные в базе, однако многие сайты используют дополнения для логирования заявок (например, Flamingo) или кастомные решения на основе хуков. Со временем накопление таких данных приводит к увеличению базы, замедлению запросов и росту нагрузки на сервер. Поэтому важно настроить автоматическую очистку устаревших записей и логов.

Как определить необходимость очистки данных

  • Проверить размер таблиц базы данных, где хранятся данные форм (например, wp_flamingo_inbound).
  • Оценить скорость работы административной панели при просмотре логов.
  • Посмотреть, есть ли в базе данные старше 30-60 дней, которые уже не нужны.

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

Рассмотрим пример с популярным плагином Flamingo, а также общий подход для кастомных таблиц.

1. Очистка записей Flamingo с помощью WP-Cron

Flamingo сохраняет данные в таблице wp_flamingo_inbound. Для удаления записей старше 30 дней используем WP-Cron и SQL-запрос.

function cf7_delete_old_flamingo_messages() {
    global $wpdb;
    $table = $wpdb->prefix . 'flamingo_inbound';
    $days = 30;
    $date_limit = date('Y-m-d H:i:s', strtotime("-{$days} days"));
    $wpdb->query(
        $wpdb->prepare(
            "DELETE FROM $table WHERE submit_time < %s",
            $date_limit
        )
    );
}

function cf7_schedule_flamingo_cleanup() {
    if ( ! wp_next_scheduled( 'cf7_flamingo_cleanup_event' ) ) {
        wp_schedule_event( time(), 'daily', 'cf7_flamingo_cleanup_event' );
    }
}

add_action( 'wp', 'cf7_schedule_flamingo_cleanup' );
add_action( 'cf7_flamingo_cleanup_event', 'cf7_delete_old_flamingo_messages' );

2. Очистка кастомных логов на основе пользовательских таблиц

Если вы сохраняете данные формы в своей таблице, например wp_custom_cf7_logs с колонкой created_at, используйте аналогичный подход:

function cf7_delete_old_custom_logs() {
    global $wpdb;
    $table = $wpdb->prefix . 'custom_cf7_logs';
    $days = 30;
    $date_limit = date('Y-m-d H:i:s', strtotime("-{$days} days"));
    $wpdb->query(
        $wpdb->prepare(
            "DELETE FROM $table WHERE created_at < %s",
            $date_limit
        )
    );
}

add_action( 'cf7_custom_logs_cleanup_event', 'cf7_delete_old_custom_logs' );

function cf7_schedule_custom_logs_cleanup() {
    if ( ! wp_next_scheduled( 'cf7_custom_logs_cleanup_event' ) ) {
        wp_schedule_event( time(), 'daily', 'cf7_custom_logs_cleanup_event' );
    }
}

add_action( 'wp', 'cf7_schedule_custom_logs_cleanup' );

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

  • Подождите 24 часа после внедрения WP-Cron задач или запустите задачу вручную через WP-CLI:
wp cron event run cf7_flamingo_cleanup_event
wp cron event run cf7_custom_logs_cleanup_event
  • Проверьте количество записей в таблицах базы данных до и после запуска.
  • В административной панели Flamingo или кастомном интерфейсе убедитесь, что старые записи удалены.
  • Отслеживайте производительность сайта, чтобы убедиться в улучшении скорости.

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

  • WP-Cron не срабатывает — часто связано с недостаточным трафиком сайта или отключенным WP-Cron. Решение: настроить системный cron на сервере или запускать WP-Cron вручную.
  • Неверное имя таблицы — используйте $wpdb->prefix для корректного определения префикса базы.
  • Отсутствие индексации в колонках даты — замедляет удаление. Добавьте индекс в колонку даты для ускорения запросов.
  • Удаление нужных записей — всегда делайте резервные копии базы перед настройкой автоматической очистки.

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

  • Проверяйте и ограничивайте права пользователя базы данных, который выполняет удаление.
  • Используйте транзакции и логи для отслеживания автоматических удалений.
  • Старайтесь не удалять слишком часто — оптимально раз в сутки с удалением данных старше 30 дней.
  • Для больших баз используйте пакетную очистку по частям с помощью LIMIT.

Сравнительная таблица подходов к очистке данных

МетодПлюсыМинусыКогда использовать
WP-Cron с SQL-запросомПросто реализовать, встроено в WPЗависит от посещаемости сайта, возможны задержкиСайты со средним трафиком, небольшие базы
Системный cron + WP-CLIНадежно, не зависит от трафикаТребует доступа к серверуБольшие базы, высоконагруженные сайты
Плагины для очистки данныхУдобство и настройки в UIДополнительная нагрузка, возможные конфликтыДля пользователей без навыков кодинга

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Contact Form 7: запрет отправки пустых форм с пользовательской валидацией
11.06.2026
Contact Form 7: Автозаполнение полей формы по ID пользователя в WordPress
02.05.2026
Contact Form 7: автоматическая обработка и сохранение ответов в WordPress
18.12.2025
Contact Form 7: как реализовать отмену отправки формы и возврат к редактированию
04.04.2026
Contact Form 7: как создать многоступенчатую форму в WordPress
27.12.2025
×

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

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

пишет статьи

готовит SEO

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

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