Спам-комментарии — одна из самых распространенных проблем на сайтах WordPress. Они не только портят репутацию ресурса, но и могут негативно влиять на производительность базы данных и SEO. В этой статье подробно разберем, как автоматизировать процесс удаления спам-комментариев, используя плагины и собственные решения на PHP.
Почему важно автоматизировать удаление спама
Ручное удаление спам-комментариев — процесс утомительный и отнимающий много времени, особенно если сайт популярен и комментарии активно оставляют боты. Кроме того, большое количество спама замедляет работу административной панели и может перегружать базу данных.
Автоматизация позволяет:
- Экономить время на модерацию;
- Поддерживать чистоту и порядок в комментариях;
- Уменьшить нагрузку на сервер и базу данных;
- Повысить безопасность сайта.
Популярные плагины для автоматического удаления спама
Среди множества плагинов для борьбы со спамом выделяются несколько, которые можно настроить для автоматического удаления подозрительных комментариев.
1. Akismet Anti-Spam
Это стандартный плагин, часто предустановленный в WordPress. Akismet анализирует комментарии и помечает их как спам. Однако по умолчанию он не удаляет их автоматически, а перемещает в папку «Спам».
Чтобы настроить автоматическое удаление, можно добавить следующий код в файл functions.php вашей темы или в плагин-надстройку:
function wpreboot_auto_delete_akismet_spam() {
global $wpdb;
$spam_comments = $wpdb->get_col("SELECT comment_ID FROM $wpdb->comments WHERE comment_approved = 'spam'");
foreach ($spam_comments as $comment_id) {
wp_delete_comment($comment_id, true);
}
}
add_action('wp_scheduled_delete', 'wpreboot_auto_delete_akismet_spam');Этот код удаляет все помеченные Akismet комментарии со статусом «spam» при запуске стандартного события WordPress wp_scheduled_delete, которое по умолчанию срабатывает раз в сутки.
2. WP SpamShield Anti-Spam
Плагин хорошо защищает от спама и может автоматически удалять его без необходимости ручной модерации. Настройки позволяют указать, как долго хранить спам, и включить автоматическую очистку.
Для интеграции с WPSpamShield также можно использовать хук очистки, но обычно плагин справляется самостоятельно.
Создаем собственный плагин для автоматического удаления спам-комментариев
Если хотите контролировать процесс глубже, можно написать простой плагин, который будет удалять спам- и помеченные как мусор комментарии по расписанию.
Вот пример минимального плагина:
<?php
/**
* Plugin Name: WPReboot Auto Spam Cleaner
* Description: Автоматическое удаление спам и мусорных комментариев.
* Version: 1.0
* Author: WPReboot
*/
function wpreboot_auto_delete_spam_comments() {
$args = [
'status' => ['spam', 'trash'],
'number' => 100, // за раз удаляем до 100 комментариев
];
$comments = get_comments($args);
foreach ($comments as $comment) {
wp_delete_comment($comment->comment_ID, true);
}
}
if (!wp_next_scheduled('wpreboot_daily_spam_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpreboot_daily_spam_cleanup');
}
add_action('wpreboot_daily_spam_cleanup', 'wpreboot_auto_delete_spam_comments');
?>Этот плагин создает задачу, которая ежедневно удаляет до 100 комментариев со статусом spam или trash. Таким образом, база данных очищается регулярно без вашего вмешательства.
Оптимизация работы с комментариями и база данных
Использование плагина Clearfy Pro для улучшения производительности
Плагин Clearfy Pro позволяет не только оптимизировать базу данных, но и улучшить систему комментариев. В числе доступных функций — регулярная очистка спам-комментариев, отключение ревизий, удаление временных данных и многое другое.
Настройка плагина интуитивно понятна, что позволяет быстро настроить автоматическую очистку без программирования.
Дополнительные советы по снижению количества спама
- Используйте капчу (Google reCAPTCHA) для форм комментариев;
- Ограничьте комментарии по времени (например, закрывайте комментарии на записи старше 30 дней);
- Включите ручную модерацию для новых комментаторов;
- Используйте плагины, блокирующие IP и ботов.
Пример функции для фильтрации комментариев по ключевым словам
Иногда полезно автоматически помечать комментарии как спам, если в них встречаются определенные слова. Вот пример пользовательской функции для фильтрации:
function wpreboot_filter_comment_by_keywords( $approved , $commentdata ) {
$spam_words = ['http://', 'https://', 'viagra', 'casino'];
foreach ($spam_words as $word) {
if (stripos($commentdata['comment_content'], $word) !== false) {
return 'spam';
}
}
return $approved;
}
add_filter('pre_comment_approved', 'wpreboot_filter_comment_by_keywords', 99, 2);Эта функция проверяет содержимое комментария на наличие спам-слов и автоматически помечает их как спам, что затем позволит плагинам или нашей автоматизации удалять их без участия модератора.
Выводы и рекомендации
Автоматизация удаления спам-комментариев — важный шаг для поддержания здоровья сайта WordPress. Использование готовых плагинов, таких как Akismet в связке с небольшими доработками, либо создание собственного плагина, позволит существенно сэкономить время и снизить нагрузку на сервер.
Также не забывайте о профилактике: настройте капчу, фильтры и модерацию, чтобы минимизировать количество спама изначально.
Для более продвинутой оптимизации стоит обратить внимание на Clearfy Pro — он поможет поддерживать вашу базу данных в чистоте и ускорить работу сайта.