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

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

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

Проверяем, есть ли логи и где они хранятся

1. Если установлен плагин Flamingo, записи хранятся в таблицах wp_flamingo_inbound и wp_flamingo_contact.
2. Если вы храните логи с помощью кастомных решений, выясните, в каких таблицах или файлах они находятся.

Для проверки можно использовать phpMyAdmin или аналогичный инструмент, выполнив запрос:

SELECT COUNT(*) FROM wp_flamingo_inbound;

Если количество записей большое (например, более 10 000), это повод задуматься об автоматической очистке.

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

1. Очистка записей Flamingo через WP-Cron

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

function cf7_delete_old_flamingo_records() {
    global $wpdb;
    $days_to_keep = 30; // Хранить данные 30 дней
    $date_threshold = date('Y-m-d H:i:s', strtotime("-{$days_to_keep} days"));

    // Удаляем старые записи из wp_flamingo_inbound
    $wpdb->query($wpdb->prepare(
        "DELETE FROM {$wpdb->prefix}flamingo_inbound WHERE submit_time < %s",
        $date_threshold
    ));

    // Удаляем старые контакты, не привязанные к актуальным сообщениям
    $wpdb->query($wpdb->prepare(
        "DELETE FROM {$wpdb->prefix}flamingo_contact WHERE created < %s",
        $date_threshold
    ));
}

// Добавляем событие в WP-Cron
if (!wp_next_scheduled('cf7_daily_cleanup')) {
    wp_schedule_event(time(), 'daily', 'cf7_daily_cleanup');
}
add_action('cf7_daily_cleanup', 'cf7_delete_old_flamingo_records');

Этот код запускает очистку один раз в сутки, удаляя записи старше 30 дней.

2. Очистка кастомных логов Contact Form 7

Если вы ведёте логи через пользовательские таблицы или файлы, настройте аналогичный WP-Cron с функцией, которая удалит старые записи или файлы. Пример удаления файлов логов старше 7 дней:

function cf7_delete_old_log_files() {
    $log_dir = WP_CONTENT_DIR . '/cf7-logs/';
    $files = glob($log_dir . '*.log');
    $now = time();
    $days_to_keep = 7;

    foreach ($files as $file) {
        if (is_file($file)) {
            if ($now - filemtime($file) > 60 * 60 * 24 * $days_to_keep) {
                unlink($file);
            }
        }
    }
}

if (!wp_next_scheduled('cf7_logfile_cleanup')) {
    wp_schedule_event(time(), 'daily', 'cf7_logfile_cleanup');
}
add_action('cf7_logfile_cleanup', 'cf7_delete_old_log_files');

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

Для проверки работы скрипта:

  • В зависимости от задачи, проверьте количество записей в таблицах Flamingo до и после выполнения WP-Cron (wp cron event run cf7_daily_cleanup из консоли или имитация Cron через wp-cli).
  • Проверьте наличие файлов логов в папке wp-content/cf7-logs/ и убедитесь, что старые файлы удалены.
  • Для отладки можно добавить error_log в функции очистки, чтобы увидеть, когда они выполняются.

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

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

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

  • Перед внедрением очистки создайте резервные копии базы и файлов.
  • Используйте WP-Cron с осторожностью, на больших сайтах лучше настроить системный cron для стабильности.
  • Если у вас много данных, разбивайте удаление на порции (batch processing), чтобы избежать перегрузки сервера и таймаутов.
  • Не сохраняйте в логах личные данные без шифрования, чтобы соблюдать GDPR и другие требования безопасности.
  • Регулярно проверяйте размер таблиц и папок с логами.

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

МетодТребованияПреимуществаНедостатки
Ручная очистка через phpMyAdminДоступ к БДПолный контрольРиск ошибок, требует времени
WP-Cron с кастомным кодомЗнания PHP, работающий WP-CronАвтоматизация, гибкостьЗависит от WP-Cron, возможны таймауты
Плагины для логирования с функцией очисткиУстановка плагинаУдобство, готовые решенияБольшая нагрузка, меньше контроля

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

⭐⭐⭐⭐⭐
Contact Form 7: отмена отправки и подтверждение через popup окно
16.11.2025
Contact Form 7 и отправка данных в 1С через Webhook: практическое руководство
08.02.2026
Contact Form 7: как добавить ответы из формы в базу данных WordPress
17.01.2026
Contact Form 7: как добавить уникальные поля с калькулятором в форму
01.11.2025
Contact Form 7: как добавить поле для загрузки файлов в форму WordPress
26.11.2025
×

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

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

пишет статьи

готовит SEO

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

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