Борьба со спамом — одна из самых актуальных задач для владельцев сайтов на WordPress, особенно если вы используете формы обратной связи через WPForms. В этой статье мы детально разберём, как эффективно удалять спам-ответы из WPForms, используя не только популярные плагины, но и кастомные решения на PHP. Рассмотрим проверенные методы, которые помогут сохранить базу данных чистой и уменьшить нагрузку на сайт.
Почему спам в WPForms — проблема и как его распознать
Спам-ответы в формах WPForms могут не только засорять базу данных, но и создавать ложное впечатление активности, мешать анализу пользовательских данных. Основные признаки спама — частые одинаковые сообщения, подозрительные ссылки, автоматические заполнения полей, нереалистичные email-адреса.
WPForms не имеет встроенного мощного антиспам-механизма, поэтому важно использовать дополнительные инструменты и кастомные фильтры.
Обычно спам можно обнаружить в админке WordPress в разделе WPForms → Entries, где можно посмотреть все отправленные формы и отфильтровать подозрительные записи.
Использование плагинов для борьбы со спамом в WPForms
Плагин WPForms Anti-Spam
Один из простых способов — установить официальный аддон WPForms Anti-Spam (доступен в премиум-версии). Он интегрируется с Google reCAPTCHA и Honeypot, автоматически блокируя большинство роботов.
Преимущества:
- Простая настройка через интерфейс WPForms.
- Автоматическая защита без дополнительного кода.
- Поддержка Google reCAPTCHA v2 и v3.
Недостатки:
- Платный аддон.
- Не всегда ловит сложные спам-боты.
Плагин Antispam Bee
Antispam Bee — бесплатный плагин, который можно настроить для работы с WPForms, удаляя спам-ответы по определённым критериям.
Для интеграции с WPForms можно использовать хуки и фильтры, чтобы проверять записи перед сохранением.
Кастомные решения: фильтрация и удаление спама с помощью кода
Если вы хотите более тонко контролировать процесс и автоматизировать удаление спама, можно использовать кастомный код в functions.php вашей темы или в собственном плагине.
Рассмотрим пример функции, которая автоматически удаляет записи WPForms, содержащие определённые ключевые слова, типичные для спама.
function wpformsru_delete_spam_entries() {
if ( ! class_exists('WPForms_Entry') ) {
return;
}
$entries = WPForms_Entry::get_entries(
array(
'form_id' => 123, // замените на ID вашей формы
'number' => 100,
'field_filters' => array(),
)
);
foreach ( $entries as $entry ) {
$fields = $entry->fields;
foreach ( $fields as $field ) {
if ( isset($field['value']) ) {
$text = strtolower($field['value']);
$spam_keywords = array('viagra', 'free money', 'click here', 'cheap');
foreach ( $spam_keywords as $keyword ) {
if ( strpos($text, $keyword) !== false ) {
WPForms_Entry::delete( $entry->entry_id );
break 2;
}
}
}
}
}
}
add_action('wpforms_process_complete', 'wpformsru_delete_spam_entries', 10, 4);Эта функция срабатывает после отправки формы и проверяет содержимое полей на наличие спамных слов, удаляя запись при совпадении.
Также можно расширить этот код, добавив проверку email, IP, пользовательских меток.
Как добавить Honeypot и reCAPTCHA в WPForms вручную
Кроме плагинов, важно внедрить антиспам-механизмы в саму форму.
Honeypot
WPForms имеет встроенный Honeypot, его нужно просто активировать в настройках формы:
- Откройте редактирование формы в WPForms.
- Перейдите в Settings → General.
- Включите опцию Enable anti-spam honeypot.
Этот метод добавляет скрытое поле, которое заполняют только роботы, благодаря чему такие отправки блокируются.
Google reCAPTCHA
Для добавления reCAPTCHA:
- Зарегистрируйтесь на https://www.google.com/recaptcha/admin и получите ключи.
- В WPForms перейдите в Settings → reCAPTCHA и вставьте ключи.
- В настройках формы включите reCAPTCHA.
Это значительно повышает защиту от спама, особенно в сочетании с Honeypot и кастомными фильтрами.
Очистка базы данных от старого спама через WP-CLI и SQL
Если у вас накопилось много спам-ответов, можно провести массовую очистку базы данных.
Использование WP-CLI
WPForms сохраняет записи в таблице wp_wpforms_entries. Для удаления спама по ключевым словам можно выполнить команду:
wp db query "DELETE FROM wp_wpforms_entries WHERE entry_data LIKE '%viagra%' OR entry_data LIKE '%free money%';"<Перед выполнением обязательно сделайте резервную копию базы.
Использование PHPMyAdmin или SQL-запроса
Аналогично можно выполнить запрос через интерфейс базы данных:
DELETE FROM wp_wpforms_entries WHERE entry_data LIKE '%click here%' OR entry_data LIKE '%cheap%';Это поможет быстро очистить базу от нежелательных данных.
Заключение: комплексный подход к удалению спама в WPForms
Для эффективной борьбы со спамом в WPForms рекомендуется комбинировать:
- Включение Honeypot и Google reCAPTCHA.
- Использование специализированных плагинов, например, WPForms Anti-Spam или Antispam Bee.
- Добавление кастомных фильтров и автоматического удаления спама через код.
- Регулярная очистка базы данных с помощью WP-CLI или SQL.
Такой подход позволит снизить количество мусорных записей, улучшить качество данных и повысить безопасность вашего сайта.