Описание comment_flood_filter
— Filter
Хук comment_flood_filter позволяет предотвратить спам-комментарии, ограничивая количество комментариев, отправленных одним пользователем за короткий промежуток времени. Он срабатывает перед проверкой комментариев на наличие спама и позволяет изменить или вернуть ошибку при превышении лимита комментариев
Примеры использования
Пример блокировки комментариев от одного и того же IP-адреса более 3 раз за 60 секунд:
add_filter('comment_flood_filter', function($false, $comment, $user_ip) {
$flood_limit = 3;
$flood_time = 60;
$comments = get_comments(array('author_IP' => $user_ip, 'date_query' => array('after' => date('Y-m-d H:i:s', strtotime('-' . $flood_time . ' seconds')))));
if (count($comments) >= $flood_limit) {
return true;
}
return false;
});
В этом примере мы проверяем, сколько комментариев было отправлено с одного IP-адреса за последние 60 секунд. Если их больше 3, то комментарий блокируется
Пример изменения лимита комментариев для определенных пользователей:
add_filter('comment_flood_filter', function($false, $comment, $user_ip) {
$allowed_users = array('admin', 'editor');
if (in_array($comment->comment_author, $allowed_users)) {
return false;
}
return $false;
});
Здесь мы разрешаем пользователям с ролями ‘admin’ и ‘editor’ оставлять любое количество комментариев
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо ограничить количество комментариев от одного пользователя за короткий промежуток времени
– Производительность
Хук может влиять на производительность, если проверки не оптимизированы, особенно при большом количестве комментариев
– Предупреждения
Убедитесь, что ваши настройки не мешают легитимным пользователям оставлять комментарии
Альтернативы
Тип: action
Этот хук срабатывает перед сохранением комментария и может использоваться для выполнения дополнительных проверок
Используйте его, если нужно выполнить другие проверки на уровне обработки комментария, такие как валидация данных