Using WordPress ‘comment_flood_trigger’ PHP action

The comment_flood_trigger WordPress PHP action fires before the comment flood message is triggered. It helps in managing the time between consecutive comments from the same user.

Usage

add_action('comment_flood_trigger', 'your_custom_function', 10, 2);
function your_custom_function($time_lastcomment, $time_newcomment) {
    // Your custom code here
}

Parameters

  • $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_trigger

Examples

Change the flood interval

Modify the minimum time interval between consecutive comments.

add_action('comment_flood_trigger', 'change_flood_interval', 10, 2);
function change_flood_interval($time_lastcomment, $time_newcomment) {
    // Set the custom flood interval in seconds
    $custom_interval = 60;
    if (($time_newcomment - $time_lastcomment) < $custom_interval) {
        wp_die('Please wait before posting another comment.');
    }
}

Log comment flood attempts

Log comment flood attempts for further analysis.

add_action('comment_flood_trigger', 'log_comment_flood_attempts', 10, 2);
function log_comment_flood_attempts($time_lastcomment, $time_newcomment) {
    // Log the flood attempt details
    error_log("Comment flood attempt: Last comment at {$time_lastcomment}, new comment at {$time_newcomment}");
}

Notify admin of comment flood attempts

Send an email notification to the admin when a comment flood attempt is detected.

add_action('comment_flood_trigger', 'notify_admin_flood_attempt', 10, 2);
function notify_admin_flood_attempt($time_lastcomment, $time_newcomment) {
    $admin_email = get_option('admin_email');
    $subject = 'Comment flood attempt detected';
    $message = "A comment flood attempt was detected on your website. Last comment at {$time_lastcomment}, new comment at {$time_newcomment}.";
    wp_mail($admin_email, $subject, $message);
}

Display a custom message for comment flood attempts

Show a custom message to users when a comment flood attempt is detected.

add_action('comment_flood_trigger', 'custom_flood_message', 10, 2);
function custom_flood_message($time_lastcomment, $time_newcomment) {
    wp_die('Please take a break before posting another comment.');
}

Disable comment flood check for certain user roles

Allow specific user roles to bypass the comment flood check.

add_action('comment_flood_trigger', 'disable_flood_check_for_roles', 10, 2);
function disable_flood_check_for_roles($time_lastcomment, $time_newcomment) {
    $user = wp_get_current_user();
    $allowed_roles = array('administrator', 'editor');
    if (array_intersect($allowed_roles, $user->roles)) {
        return;
    }
    // Default comment flood check
    if (($time_newcomment - $time_lastcomment) < 15) {
        wp_die('Please wait before posting another comment.');
    }
}