Спам в комментариях — одна из самых распространённых проблем для владельцев сайтов на WordPress. Он не только загромождает базу данных, но и портит репутацию ресурса. В этой статье разберём, как можно автоматизировать удаление спама в комментариях с помощью кода и популярных плагинов, а также рассмотрим примеры, позволяющие настроить процесс максимально эффективно.
Почему важно автоматизировать удаление спама в комментариях
Ручная модерация большого количества комментариев – трудоёмкий и скучный процесс. Спам-сообщения могут накапливаться быстро, особенно на популярных сайтах, что влияет на производительность и безопасность. Автоматизация помогает:
- Сократить нагрузку на модераторов.
- Поддерживать чистоту базы данных и ускорять её работу.
- Повысить качество пользовательского взаимодействия.
- Уменьшить риск попадания вредоносных ссылок на сайт.
Использование плагинов для автоматического удаления спама
1. Akismet Anti-Spam
Akismet — самый популярный плагин для борьбы со спамом. Он автоматически проверяет каждый комментарий и помещает подозрительные в очередь спама.
Основные возможности:
- Автоматическая фильтрация спама.
- Возможность просматривать и удалять спам-комментарии в админке.
- Интеграция с большинством популярных тем и плагинов.
Как настроить Akismet:
- Установите и активируйте плагин из репозитория WordPress.
- Зарегистрируйтесь на официальном сайте Akismet и получите API-ключ.
- Введите ключ в настройках плагина и активируйте его.
- Проверьте работу фильтра, отправив тестовый комментарий.
2. WPSpamShield Anti-Spam
Этот плагин защищает не только комментарии, но и формы регистрации и контактные формы от спама без использования CAPTCHA.
Преимущества:
- Защита на стороне сервера и клиента.
- Минимальная нагрузка на сайт.
- Автоматическое удаление спам-комментариев через заданный период.
Настройка проста и не требует сложных действий после установки.
Автоматизация удаления спама с помощью пользовательского кода
Если вы хотите более гибко контролировать процесс удаления спама, можно добавить кастомный код в файл functions.php вашей темы или создать плагин.
Пример: Автоматическое удаление комментариев со статусом «спам» старше 7 дней
function wpteam_auto_delete_spam_comments() {
global $wpdb;
$days = 7;
$table = $wpdb->comments;
$wpdb->query( $wpdb->prepare(
"DELETE FROM $table WHERE comment_approved = 'spam' AND comment_date < NOW() - INTERVAL %d DAY",
$days
));
}
add_action('wp_scheduled_delete', 'wpteam_auto_delete_spam_comments');Этот код удаляет все комментарии со статусом «спам», которые старше 7 дней. Хук wp_scheduled_delete вызывается WordPress при выполнении планировщика задач, обычно раз в день. Если хотите, можно создать отдельное событие cron, чтобы запускать удаление по расписанию.
Как создать свое расписание для удаления спама
Добавьте в functions.php следующий код для регистрации и запуска задачи:
function wpteam_register_cron_schedule($schedules) {
$schedules['every_6_hours'] = array(
'interval' => 21600, // 6 часов в секундах
'display' => __('Каждые 6 часов')
);
return $schedules;
}
add_filter('cron_schedules', 'wpteam_register_cron_schedule');
function wpteam_setup_cron_job() {
if (!wp_next_scheduled('wpteam_delete_spam_comments_hook')) {
wp_schedule_event(time(), 'every_6_hours', 'wpteam_delete_spam_comments_hook');
}
}
add_action('wp', 'wpteam_setup_cron_job');
add_action('wpteam_delete_spam_comments_hook', 'wpteam_auto_delete_spam_comments');Этот код создаёт новое расписание и запускает функцию удаления спама каждые 6 часов.
Как дополнительно уменьшить количество спама
Использование капчи и ограничений
Помимо автоматического удаления, важно предотвратить попадание спама. Для этого:
- Добавьте Google reCAPTCHA или hCaptcha в формы комментариев.
- Ограничьте возможность комментирования для новых пользователей.
- Используйте плагины вроде Clearfy Pro, которые умеют блокировать спам и оптимизировать сайт.
Фильтрация комментариев по ключевым словам
Можно добавить собственный список запрещённых слов, по которым комментарии будут автоматически помечаться как спам. Пример кода:
function wpteam_filter_spam_keywords($commentdata) {
$spam_words = array('viagra', 'casino', 'free money');
foreach ($spam_words as $word) {
if (stripos($commentdata['comment_content'], $word) !== false) {
$commentdata['comment_approved'] = 'spam';
break;
}
}
return $commentdata;
}
add_filter('preprocess_comment', 'wpteam_filter_spam_keywords');Такой метод помогает отфильтровать много спама ещё на этапе отправки комментария.
Заключение
Автоматизация удаления спама в комментариях позволяет поддерживать сайт чистым и уменьшить нагрузку на администраторов. Используйте готовые решения в виде плагинов, а при необходимости дополняйте их кастомным кодом для точной настройки. Не забывайте про профилактические меры: капчи, фильтрацию по ключевым словам и регулярное обновление WordPress и плагинов, чтобы не допустить появления новых уязвимостей.
Для удобной борьбы со спамом и оптимизации сайта рекомендуем обратить внимание на Clearfy Pro — мощный инструмент с функциями защиты и оптимизации WordPress.