The comment_flood_filter WordPress PHP filter checks if a comment flood is occurring, with a default value of false.
Usage
add_filter('comment_flood_filter', 'your_custom_function', 10, 3);
function your_custom_function($bool, $time_lastcomment, $time_newcomment) {
// your custom code here
return $bool;
}
Parameters
$bool(bool): Whether a comment flood is occurring. Default false.$time_lastcomment(int): Timestamp of when the last comment was posted.$time_newcomment(int): Timestamp of when the new comment was posted.
More information
See WordPress Developer Resources: comment_flood_filter
Examples
Limit comment frequency to 1 comment per minute
This example prevents users from posting comments more frequently than once per minute.
add_filter('comment_flood_filter', 'limit_comment_frequency', 10, 3);
function limit_comment_frequency($bool, $time_lastcomment, $time_newcomment) {
if (($time_newcomment - $time_lastcomment) < 60) {
return true;
}
return false;
}
Allow admins to bypass comment flood restriction
This example allows administrators to bypass the comment flood restriction.
add_filter('comment_flood_filter', 'admin_bypass_comment_flood', 10, 3);
function admin_bypass_comment_flood($bool, $time_lastcomment, $time_newcomment) {
if (current_user_can('manage_options')) {
return false;
}
return $bool;
}
Disable comment flood check for specific post categories
This example disables the comment flood check for posts within specific categories.
add_filter('comment_flood_filter', 'disable_flood_check_for_categories', 10, 3);
function disable_flood_check_for_categories($bool, $time_lastcomment, $time_newcomment) {
$post_id = get_the_ID();
$categories = get_the_category($post_id);
$allowed_categories = array('discussion', 'community');
foreach ($categories as $category) {
if (in_array($category->slug, $allowed_categories)) {
return false;
}
}
return $bool;
}
Log comment flood attempts
This example logs any comment flood attempts to a file.
add_filter('comment_flood_filter', 'log_comment_flood_attempts', 10, 3);
function log_comment_flood_attempts($bool, $time_lastcomment, $time_newcomment) {
if ($bool) {
$log_entry = sprintf(
"Comment flood attempt at %s: Last: %d, New: %d\n",
date('Y-m-d H:i:s', $time_newcomment),
$time_lastcomment,
$time_newcomment
);
error_log($log_entry, 3, 'comment_flood_log.txt');
}
return $bool;
}