Спам-комментарии — одна из типичных проблем любого сайта на WordPress. Они не только захламляют базу данных, но и ухудшают репутацию сайта в глазах поисковых систем и посетителей. Особенно трудными бывают случаи, когда комментарии выглядят вполне естественно (soft спам), но на деле служат лишь для продвижения или вредоносных целей. В этой статье разберёмся, как эффективно обнаружить, удалить и заблокировать оба вида спама — жёсткий и soft, используя плагины и кастомные решения.
Виды спам комментариев и их отличия
Жёсткий спам — это очевидные нежелательные комментарии с бессмысленными ссылками, рекламой или неподходящим содержанием. Такие комментарии легко распознаются по ключевым словам, ссылкам на сомнительные сайты и частым повторениям.
Soft спам — это более тонкие случаи, когда комментарии выглядят релевантно и даже полезно, но содержат скрытую рекламу, SEO-ссылки или намеренное продвижение. Их сложнее отфильтровать стандартными средствами, поэтому нужны более продвинутые методы.
Использование плагинов для обнаружения и удаления спама
Для борьбы со спамом традиционно применяют такие плагины:
- Akismet — один из самых популярных сервисов для автоматического обнаружения спам-комментариев. Он анализирует содержимое и IP-адреса, блокируя очевидный спам.
- Antispam Bee — бесплатный плагин, хорошо работающий с европейскими сайтами, не требующий регистрации и сбора данных.
- WPSpamShield — сочетает антиспам защиту для комментариев и форм регистрации, блокируя спам без капчи.
Однако для soft спама с этими плагинами бывает недостаточно. Здесь помогут дополнительные методы.
Настройка Akismet и интеграция с WPRemark для отзывов
Akismet можно подключить через API ключ, получить его можно бесплатно для личных сайтов. После активации плагина и ввода ключа он начнёт автоматически фильтровать комментарии и помещать подозрительные в папку спама.
Если вы используете плагин WPRemark для отзывов, рекомендуем настроить интеграцию с Akismet, чтобы отзывы с подозрительным содержанием тоже попадали под проверку.
Кастомные решения для удаления и блокировки soft спама
Для более тонкой фильтрации можно использовать пользовательские фильтры и хуки WordPress. Рассмотрим пример функции, которая дополнительно проверяет комментарии на наличие скрытых ссылок и запрещает их публикацию.
function wpchecker_filter_soft_spam_comment($approved, $commentdata) {
// Проверяем наличие ссылок в комментарии
if (preg_match('/<a\s+href=/i', $commentdata['comment_content'])) {
// Можно дополнительно проверить домен ссылки или ключевые слова
$pattern = '/(spamdomain\.com|badsite\.ru)/i';
if (preg_match($pattern, $commentdata['comment_content'])) {
return 'spam'; // Поместить в спам
}
// Если просто ссылки, но подозрительно, можно заблокировать
return '0'; // Ожидает модерацию
}
return $approved;
}
add_filter('pre_comment_approved', 'wpchecker_filter_soft_spam_comment', 10, 2);
Эта функция проверяет, есть ли в комментариях ссылки, и если они содержат подозрительные домены, переводит комментарий в статус спама. В противном случае комментарий ставится в очередь на модерацию для дополнительной проверки.
Автоматическое удаление старого спама из базы данных
Чтобы не захламлять базу, рекомендуется регулярно очищать папку со спамом. Для этого можно использовать следующий код, который удаляет комментарии со статусом 'spam', старше 30 дней:
function wpchecker_delete_old_spam_comments() {
global $wpdb;
$wpdb->query(
$wpdb->prepare(
"DELETE FROM $wpdb->comments WHERE comment_approved = 'spam' AND comment_date < %s",
date('Y-m-d H:i:s', strtotime('-30 days'))
)
);
}
add_action('wp_scheduled_delete', 'wpchecker_delete_old_spam_comments');
Этот код можно запускать через крон WordPress, чтобы периодически чистить спам.
Дополнительные методы защиты от спама
Для повышения безопасности и снижения количества спама стоит использовать комплексные меры:
- Реализация капчи — подключите reCAPTCHA или плагин с аналогичной функцией, например My Popup с капчей для форм.
- Ограничение частоты комментариев — настройте лимиты, чтобы один пользователь не мог массово оставлять комментарии.
- Чёрные списки слов и IP — добавляйте в настройки WordPress слова и IP, которые систематически используются в спаме.
- Использование плагинов безопасности, например Clearfy Pro — они помогают оптимизировать и защищать сайт, включая антиспам механизмы.
Пример реализации ограничения комментариев по IP с помощью WPChecker
Добавим кастомный фильтр, который ограничит количество комментариев с одного IP до 3 за час:
function wpchecker_limit_comments_per_ip($commentdata) {
global $wpdb;
$ip = $commentdata['comment_author_IP'];
$time_limit = date('Y-m-d H:i:s', strtotime('-1 hour'));
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM $wpdb->comments WHERE comment_author_IP = %s AND comment_date > %s",
$ip, $time_limit
));
if ($count >= 3) {
wp_die('Вы превысили лимит комментариев за последний час. Пожалуйста, попробуйте позже.');
}
return $commentdata;
}
add_filter('preprocess_comment', 'wpchecker_limit_comments_per_ip');
Этот код поможет снизить количество спама с одного IP, особенно полезен для борьбы с ботами.