Спам в комментариях — одна из распространённых проблем WordPress-сайтов, особенно если вы ведёте блог или сайт с активным сообществом. Он не только засоряет базу данных, но и негативно влияет на SEO и пользовательский опыт. В этой статье подробно разберём, как эффективно удалять и блокировать спам комментарии с помощью плагинов и собственных решений.
Почему важно бороться со спамом в комментариях WordPress
Спам-комментарии часто содержат ссылки на вредоносные сайты, рекламу или просто мусорный текст. Их накопление ведёт к:
- Замедлению работы сайта из-за увеличения объёма базы данных.
- Потере доверия посетителей и ухудшению пользовательского опыта.
- Потенциальным проблемам с SEO, так как поисковые системы могут понизить рейтинг сайта.
Поэтому регулярное удаление и блокировка спама — обязательная часть технического обслуживания WordPress.
Использование плагинов для борьбы со спамом
Akismet — классика для защиты от спама
Akismet — самый популярный плагин для автоматической фильтрации спам-комментариев. Он анализирует комментарии через облачный сервис и автоматически помечает подозрительные.
Преимущества Akismet:
- Автоматическая проверка всех комментариев.
- Интеграция с большинством популярных плагинов для комментариев.
- Возможность просмотра и управления спамом в админке.
Для установки:
- Перейдите в раздел «Плагины» > «Добавить новый».
- В поиске введите «Akismet» и установите плагин.
- Активируйте и настройте ключ API — бесплатный для некоммерческих сайтов.
Однако Akismet не всегда идеален, и иногда спам проходит, либо полезные комментарии попадают в спам.
Clearfy Pro — расширенный контроль и оптимизация
Плагин Clearfy Pro предлагает расширенный набор настроек для борьбы со спамом, включая отключение XML-RPC, отключение trackbacks и pingbacks, а также оптимизацию комментариев.
Clearfy Pro позволяет настроить жёсткие фильтры и блокировать ботов ещё до попадания комментария в базу данных. Это снижает нагрузку на сайт и предотвращает появление спама.
Как запрограммировать удаление и блокировку спама своими силами
Автоматическое удаление спам-комментариев по дате
Если у вас накопилось много спам-комментариев, их полезно регулярно удалять программно. Например, удалять все спам-комментарии старше 30 дней. Вот пример функции, которую можно добавить в файл functions.php вашей темы или в отдельный плагин:
function wpchecker_delete_old_spam_comments() {
global $wpdb;
$days = 30;
$date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
$wpdb->query( $wpdb->prepare(
"DELETE FROM $wpdb->comments WHERE comment_approved = 'spam' AND comment_date < %s",
$date
) );
}
// Запускаем функцию раз в день с помощью WP-Cron
if ( ! wp_next_scheduled( 'wpchecker_delete_old_spam_comments_hook' ) ) {
wp_schedule_event( time(), 'daily', 'wpchecker_delete_old_spam_comments_hook' );
}
add_action( 'wpchecker_delete_old_spam_comments_hook', 'wpchecker_delete_old_spam_comments' );Этот код удалит спам-комментарии старше 30 дней, освобождая базу от мусора.
Блокировка комментариев с подозрительными ссылками
Иногда спам-комментарии содержат ссылки на определённые домены или слишком много ссылок. Можно заблокировать такие комментарии ещё при попытке оставить их. Вот пример функции, которая запрещает комментировать с более чем 2 ссылками или с ссылками на запрещённые домены:
function wpchecker_block_spammy_comments( $commentdata ) {
$comment_content = $commentdata['comment_content'];
// Ограничение по количеству ссылок
preg_match_all( '/https?:\/\//', $comment_content, $matches );
if ( count( $matches[0] ) > 2 ) {
wp_die( 'Ваш комментарий содержит слишком много ссылок и был заблокирован.' );
}
// Запрещённые домены
$blocked_domains = array('spamdomain.com', 'badsite.ru');
foreach ( $blocked_domains as $domain ) {
if ( strpos( $comment_content, $domain ) !== false ) {
wp_die( 'Ваш комментарий содержит запрещённые ссылки и был заблокирован.' );
}
}
return $commentdata;
}
add_filter( 'preprocess_comment', 'wpchecker_block_spammy_comments' );Такое решение позволит значительно снизить количество спам-комментариев с нежелательным контентом.
Советы по дополнительной защите комментариев
Использование капчи и антиспам плагинов
Добавление капчи — простой и эффективный способ защитить форму комментариев от автоматических спам-ботов. Популярные плагины:
- Google Captcha (reCAPTCHA) by BestWebSoft — лёгкий в настройке плагин с поддержкой Google reCAPTCHA.
- WPBruiser — антиспам плагин без капчи, который блокирует ботов на основе поведения.
Отключение комментариев для старых записей
Чтобы снизить количество спама на старых публикациях, можно отключить комментарии для записей старше определённого периода. В WordPress это делается через настройки, но можно и программно. Пример кода:
function wpchecker_disable_comments_on_old_posts( $open, $post_id ) {
$post = get_post( $post_id );
$days = 90; // Количество дней для разрешённых комментариев
if ( strtotime( $post->post_date ) < strtotime( '-' . $days . ' days' ) ) {
return false;
}
return $open;
}
add_filter( 'comments_open', 'wpchecker_disable_comments_on_old_posts', 10, 2 );Это уменьшит количество спама без ущерба для активности на свежих публикациях.
Использование WP-CLI для управления спамом
Если у вас есть доступ к командной строке сервера, WP-CLI поможет быстро управлять комментариями. Например, чтобы удалить все спам-комментарии, выполните команду:
wp comment delete $(wp comment list --status=spam --format=ids)Это быстро и эффективно для очистки базы, особенно на больших сайтах.
Итоговые рекомендации
Для комплексной защиты от спама в комментариях рекомендуем сочетать автоматические плагины (Akismet, Clearfy Pro), программные фильтры, регулярную очистку базы и дополнительную защиту в виде капчи или WPBruiser. Такой комплексный подход обеспечит чистоту комментариев, снизит нагрузку на сайт и улучшит пользовательский опыт.
Подробнее про Clearfy Pro и другие полезные инструменты вы можете узнать на WPSHOP.ru.