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

Почему важно удалять отправленные данные и логи Contact Form 7

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

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

Диагностика проблемы: как понять, что данные копятся

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

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

1. Использование WP Cron для удаления старых записей Flamingo

Если вы используете Flamingo для сохранения отправленных форм, можно добавить задачу, которая будет удалять записи старше определенного времени (например, 30 дней). Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:

if (!wp_next_scheduled('cf7_delete_old_flamingo')) {
    wp_schedule_event(time(), 'daily', 'cf7_delete_old_flamingo');
}

add_action('cf7_delete_old_flamingo', function() {
    global $wpdb;
    $days = 30; // Количество дней для хранения
    $threshold = date('Y-m-d H:i:s', strtotime("-{$days} days"));
    $table = $wpdb->prefix . 'flamingo_inbound';
    $deleted = $wpdb->query(
        $wpdb->prepare("DELETE FROM $table WHERE time < %s", $threshold)
    );
});

2. Автоматическое удаление данных из CFDB7

Для пользователей CFDB7 добавьте аналогичный код для удаления записей старше 30 дней:

add_action('wp', function() {
    if (!wp_next_scheduled('cf7_delete_old_cfdb7')) {
        wp_schedule_event(time(), 'daily', 'cf7_delete_old_cfdb7');
    }
});

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

3. Очистка логов плагинов логирования

Если вы используете плагины для логирования отправок (например, Contact Form 7 Controls или сторонние), проверьте их документацию для настройки автоматического удаления. Если такой возможности нет, можно настроить очистку из базы данных вручную или через WP Cron аналогично предыдущим примерам.

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

  • Подключитесь к базе данных через phpMyAdmin или Adminer и проверьте количество записей в таблицах flamingo_inbound или cf7dbplugin_submits до и после 1-2 дней работы WP Cron.
  • Проверьте логи сервера на предмет ошибок удаления.
  • Убедитесь, что сайт не замедлился и формы продолжают корректно сохранять новые данные.
  • Для тестирования запуска Cron вручную используйте WP CLI команду: wp cron event run cf7_delete_old_flamingo или wp cron event run cf7_delete_old_cfdb7.

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

  • Задача WP Cron не запускается: проверьте, что на сайте есть посещения (WP Cron запускается при обращении к сайту), или настройте системный cron на сервере для запуска wp cron event run --due-now.
  • Ошибка прав доступа к базе данных: убедитесь, что пользователь базы данных имеет права на удаление записей.
  • Таблица не существует или название отличается: проверьте префикс таблиц и используйте правильные имена в коде.
  • Удаляются нужные данные: внимательно настройте условие удаления по дате, чтобы не потерять свежие записи.

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

  • Не храните пользовательские данные дольше, чем это необходимо — учитывайте требования GDPR и других законов.
  • Регулярно делайте резервные копии базы данных перед внедрением автоматических удалений.
  • Оптимизируйте таблицы базы после удаления большого количества записей с помощью OPTIMIZE TABLE.
  • Используйте отдельные таблицы или сервисы для хранения логов, чтобы не нагружать основную базу данных сайта.

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

МетодПлюсыМинусы
WP Cron + кастомный кодГибкость, бесплатный, полный контрольЗависит от посещаемости сайта, требует навыков программирования
Плагины с автоматической очисткойПростота настройки, нет кодаМожет быть ограничена функциональность, нагрузка на сайт
Ручная очистка через базу данныхПолный контроль, быстроРиск ошибок, требует регулярного ручного вмешательства

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

⭐⭐⭐⭐⭐
Contact Form 7: универсальные хуки для расширения функциональности
11.01.2026
Contact Form 7: как добавить поле для загрузки файлов в форму WordPress
26.11.2025
Contact Form 7: вставка и обработка поля с Google Maps в форме WordPress
29.03.2026
Contact Form 7 и отправка данных в Google Sheets: подробное руководство с примерами
15.12.2025
Contact Form 7: как добавить поля динамического выбора в форму
26.02.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙