Почему важно удалять отправленные данные и логи 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 + кастомный код | Гибкость, бесплатный, полный контроль | Зависит от посещаемости сайта, требует навыков программирования |
| Плагины с автоматической очисткой | Простота настройки, нет кода | Может быть ограничена функциональность, нагрузка на сайт |
| Ручная очистка через базу данных | Полный контроль, быстро | Риск ошибок, требует регулярного ручного вмешательства |